An introductory course (and its successor) in programming should be concerned with three aspects of programming: 1. How to solve problems, 2. How to describe an algorithmic solution to a problem, 3. How to verify that an algorithm is correct. I should like to discuss mainly the first two aspects.
I. Introduction An introductory course (and its suc- cessor) in programming should be concerned with three aspects of programming: i. How to solve problems, 2. How to describe an algorithmic solution to a problem, 3. How to verify that an algo- rithm …
An introductory course (and its successor) in programming should be concerned with three aspects of programming: 1. How to solve problems, 2. How to describe an algorithmic solution to a problem, 3. How to verify that an algorithm is correct. I should like …
An introductory course (and its successor) in programming should be concerned with three aspects of programming: 1. How to solve problems, 2. How to describe an algorithmic …
1 How to learn new things(learning how to learn) 2.Linux 3.Mathematics for computer science (Discrete Maths, Algebras(Boolean, Relation, Linear), 4.Graph Theory(Map based Algorithms, graph databases) 5..Mathematics for Functional programming (Lamb...
Having taught computer programming for over twenty years now, I know that learning a programming language is a hard task for many students. However, by introducing programming topics in the right order, at the right time, and in the right dose, students will find programming a more pleasant topic to learn, and, hopefully, find useful for them regardless of what career they choose.
According to Xie, et.al., a template is a reusable abstraction of programming knowledge, and being able to read a template and know when and how to apply it to an appropriate problem is the next step in programming instruction.
The first thing we need is a low barrier to entry. In the course, the very first assignment is a string sorter (take a list of strings and sort it alphabetically), which is difficult assignment for a few reasons:
The first thing we can do is give them easier tools. I found a simple Python IDE called Thonny, where you install it and just write code. There’s a nice GUI that gives more useful feedback on errors. There’s also repl, which is an online IDE. No installation needed.
Once we have the right tools, it’s time to slowly build confidence. My new approach moving forward is this:
In each assignment, I will also offer bonuses like, “in what instance would this statement be true?” For the user input program, students are to ask users what their job title is. A bonus for that assignment is to make that response grammatically correct (“You’re a Programmer” vs. “You’re an Olympic Diver”).
I just rolled out this new method in my course, and I’m excited to see the results. I tried to forget all assumptions because I’ve been coding for near 15 years. I will be interested to hear feedback and see student progress.
Teaching introductory programming courses is not an easy task. Instructors of introductory programming courses are facing many challenges related to the nature of programming, the students’ characteristics and the traditional teaching methods that they are using. Blended learning seems to be a promising approach to address these challenges.
However, teaching introductory programming courses is still challenging for most instructors [ 11, 12 ]. The literature shows many reasons for that. Some are related to the students’ characteristics, the teaching methods or the nature of programming [ 1, 13 ].
Many studies concluded that blended learning can be more effective than traditional teaching and can improve students’ learning experience. However, the current state of knowledge and practice in applying blended learning to introductory programming courses is limited.
Blended learning can be identified as the thoughtful integration of different online and face to face instructional methods such as: lectures, self-paced activities and online discussion groups [ 20 ]. A growing body of literature shows that blended learning can enhance students learning experience and overcome the shortcomings of traditional teaching approaches [ 4, 21, 22 ]. Blended learning can increase students’ flexibility and convenience, improve their learning outcomes and increase their engagement in learning [ 23 ]. It can also allow instructors to better interact with their students and develop variety of solutions to course problems [ 24 ].
The protocol includes: (1) the inclusion and exclusion criteria for studies; (2) the scientific databases suitable for the review; (3) the search terms used to retrieve relevant studies; and (4) the methods for studies selection, screening, data extraction, and analysis.
The vast majority of studies included in this review shows that blended learning has a positive effect on teaching, with students also identifying that blended courses effectively support learning. This is mainly related to the rich variety of face-to-face and online components that could be incorporated into blended courses. As has been discussed in the background section, each of the five components of blended learning has its own advantages. By thoughtful mixing these components, instructors can enhance their students’ learning experience and achieve the desired outcomes.
Blended learning has proved to be an effective approach to improving self-learning skills [ 78, 85 ], which are very important in learning programming.
Pair programming is a good practice in real-life programming [ 17] and also a good way to teach [ 18 ]. Partners can not only help each other out during practical exercises but can also clarify each other's misconceptions when the solution is presented. Both parties involved in pair programming learn while doing it.
While a slide deck is like a highway, live coding allows instructors to go off-road and follow their learners' interests or answer unanticipated questions. 2. It facilitates unintended knowledge transfer: students learn more than the instructor consciously intends to teach by watching how instructors do things.
One-on-one tutoring is perhaps the ideal form of teaching: all of a teacher's attention can be focused on one student, and they can completely customise their teaching for that person and tailor individual feedback and corrections based on a two-way dialogue with them.
Originally created by Eric Mazur at Harvard [ 8 ], it has been studied extensively in a wide variety of contexts, including programming [ 9, 10 ]. In simplified form, peer instruction proceeds in several phases: 1. The instructor gives learners a brief introduction to the topic. 2.
Pair programming is a software development practice in which 2 programmers share 1 computer. One person (called the driver) does the typing, while the other (called the navigator) offers comments and suggestions. The two switch roles several times per hour. Pair programming is a good practice in real-life programming [ 17] and also a good way to teach [ 18 ]. Partners can not only help each other out during practical exercises but can also clarify each other's misconceptions when the solution is presented.
Guzdial [ 3] refers to the belief that some people are born programmers and others aren't as "computing's most enduring and damaging myth." This is often "confirmed" by looking at university grade distributions, which are commonly held to be bimodal: a low-scoring hump of those who will never get it and a high-scoring hump of those who have the right stuff. Our first and most important tip is that this is wrong: competence at programming is not innate but is rather a learned skill that can be acquired and improved with practice.