In this post I will illustrate how I apply constructivism in my sessions, programming is taught as beginner, intermediate and advanced level courses. For a beginner level programming course, I usually start by questioning what students know about computer in general, lots of students are familiar with computer applications and some know hardware, others did some programming. Before starting with programming concepts, I start talking about computers as I call them “our companions”, I question my students knowledge with simple questions as “how data is processed”, I use some of computer components such as processor, primary memory, or some secondary storage for illustration, I usually find that though most students having their computers around all the time but some have never seen how a computer circuit or chip looks like, I love to carry out discussions where students interact, see and touch components, perhaps make little search on latest versions of computers and their configurations, It is very important that they are familiar with the device that they are using throughout their learning in more technical way. Then we get into programming, many of my students specially elder ones imagine that programming means that they will sit and work with their companion i.e. computer, but actually that isn’t true, computer programming requires the understanding of a variety of different areas such as logic and mathematical concepts, syntax, the language interface, algorithms, flowcharts, and pseudo code, which can overwhelm the learner and increase levels of stress and frustration, that’s why I started during lab sessions to use some educational tools such as scratch (https://scratch.mit.edu/), students develop stories, games and animation which is fun while they are learning the basic concepts of programming, at the same time they use a programming IDE (Integrated Development Environment) to solve frequent small scale exercises as well, through these exercises they experiment programming syntax, compile, run, and see output, debug their errors whether they are syntax or semantic ones, and finally they get the right outcome. In this course students get to know there are a variety of solutions or algorithms to solve the same problem, they exchange solutions and discuss their and listen to others, reaching the end of the course they begin to combine all these skills and work as small groups to solve more complex problems, by the end of this introductory course, students would have gained skills of being an independent, reflective, and proactive thinking learner which will to continue as lifetime habits.
In Intermediate level, programming project form an important part of the course, the project start at early stages of course along with concepts, each concept integrate to build part of project, the end product or application is the outcome of this course, it is crucial to construct something to be seen, criticized by others outside their class or course scope, whether this product is a game or a complex governmental system it will be highly effective in students career life later. Here is my plan, along with the course each group of students working together will join a non-profit organization for analysis and observation just for a short period, then each group purpose an idea of a project related to the non-profit organization, project idea should be feasible to be fully implemented within course time frame, then they collaborate to implement their project idea where tasks are divided and each of them has a role, as a facilitator I weekly meet each group within our course sessions for review and feedback, finally students are asked to provide a concept map such as use-case diagram which always been solely positive and collect all material they have used for analysis, project design and implementation a portfolio.
In advanced programming which is to be taught online using constructivist learning approach, at the beginning of this course students are grouped, four students maximum join each group, their main job is to solve one open ended “ill structured (Barrows,1998) ” (as cited Ram, Ram,& Sprague) problem or a case, examples of such problems simulating a road network, maintaining information about Olympic events and athletes, or answering arbitrarily complex database, students are required to engage in interactive web based environment, identify their learning goals, conduct discussions, register their own progress, open to new ideas, and communicate to others within and outside the learning community, and my job is to coach, finally students are asked to provide a successful resolution of problem, specification, implementation and their future recommendation in a study report.
- Ram, p., Ram. A., &Sprague, C. (2005). From Student Learner to Professional Learner: Training for Lifelong Learning through On-Line PBL. Emory University, College of Computing, and Georgia Institute of Technology, USA. Retrieved from cc.gatech.edu