Rules of Diactics - programming machine

 



5. Role of Didactics and Problem Domain
It is very important to motivate students, so that they take a deeper interest in computer
science and programming, and will not consider it a triviality. Therefore, the application
domain must be attractive. This is not easy in a course or competition with a diverse
audience.
When teaching a course on programming, it is important to be aware of didactic issues. For instance, the looping construct in most programming languages is syntactically
not so difficult, and even semantically it may be simple. But loops serve many purposes,
and each requires further insights. Hence, it is important to teach the design of loops in a
systematic way. Similarly, recursion is almost trivial from the language perspective, but
didactically it needs a careful approach (Verhoeff, 2018).
Another essential topic in programming is that of abstraction (Verhoeff, 2011). Once
the primitive building blocks of a programming language have been treated, it turns out
that in real programs it is important to capture all kinds of abstractions (both on the level
of data and actions). Defining and designing such abstractions is at the heart of computer
science and programming.
Good study material should include:


 ● A textbook (preferably in interactive digital form, that can be searched).
● Exercises, with feedback; possibly on-line and automated, such as Codingbat
(2019); Datacamp (2019).
● Web lectures (cf. Khan Academy, EdX, Lynda, etc.).
Certain choices (language, tools, problem domain, and didactic approach) will require an investment that makes it harder to change these choices later on. For instance,
development of exercises and assignments is costly, but their details will critically depend on these choices.
5 https://www.jetbrains.com/pycharm/
6 https://jupyter.org/ supporting over 40 programming languages
168 T. Verhoeff
6. Conclusion
It is legitimate to expect that non-CS students will need some programming skills. It is
also legitimate to expect that they need at least some software engineering skills. But
they also need more fundamental insights in computing concepts that transcend programming and software development.
Whether this can be combined in a single course (a single competition) is debatable,
and would certainly pose an extreme challenge. When covering this material in multiple
courses, these courses must be carefully coordinated.
We should avoid pretending that a ‘personal programming’ course will make you a
computer scientist, or a software engineer. Learning a programming language is relatively easy, writing good software is hard.
We identified three forces (see Fig. 1), and observed the following dependencies. 


● Even if a course is intended solely as an introduction to CS, it is a good idea to
include some programming involving an executable programming language.
Motivation: Using informal notation or pseudo code to express algorithms leaves
the door open for sloppiness and misunderstanding.
Note: In this case, only a minimum of software engineering issues need to be addressed.
● If programming needs to be applied in practice, no matter on what scale, then computer science and software engineering knowledge is needed.
Motivation: Without CS and SE knowledge, it is too easy to create low-quality
software. This is frustrating, time consuming, and costly.
Note: The scale of application will determine the amount of CS and SE to include.


 ● To understand the lessons of software engineering, it is necessary to have some
programming experience.
The appendices list, what I consider, the top-10 most relevant topics from each of the
three corners. Compare this to IOI Syllabus (2019).
References
ACM/IEEE-CS Joint Task Force on Computing Curricula (2013). Computer Science Curricula 2013. ACM
Press and IEEE Computer Society Press. DOI: dx.doi.org/10.1145/2534860
Barr, J. et al. (2010). What everyone needs to know about computation. SIGCSE’10, pp.127–128, 10–13.
Codingbat, codingbat.com
Cormen, Th.H. (2013). Algorithms Unlocked. MIT Press.
Cormen, Th.H. et al. (2009). Introduction to Algorithms (3rd Ed.). MIT Press.
Computing at School Working Group (2012). A Curriculum Framework for Computer Science and Information
Technology. https://www.computingatschool.org.uk
Datacamp, https://datacamp.com
Denning, P.J. (2003). Great principles of computing. CACM, 46(11),15–20. Also see: http://greatprinciples.org with online FAQ
Denning, P.J. (2004). The field of programmers myth, CACM, 47(7),15–20.
Denning, P.J., C.H. Martell (2015). Great Principles of Computing. MIT Press.
Granger, C. (2015). Coding Is not the new literacy. Blog post, 26 Jan. 2015.
https://www.chris-granger.com/2015/01/26/coding-is-not-the-new-literacy/

Media click -information Desk

lion Media lion productions , media publisher , magazitta staff

Post a Comment

Previous Post Next Post

Contact Form