END; require_once "include/calendar.php"; require_once "include/planner-include.php"; require_once "include/header.inc.php"; ?>


Problem-based learning and introductory computer science

traditional computer science

How is introductory computer science currently taught?

Computer science is not a static discipline. New technologies, new problems, and new opportunities emerge every year. How can we help beginning computer scientists develop the problem-solving skills that will help them survive and innovate?

CS21A is the introductory computer science course at a liberal arts university. Previous programming experience is not required. Computer science majors take the course in first year. In this course, students learn programming concepts through training in a popular programming language. At the same time, they are also prepared to be computer scientists - not just computer programmers.

A typical module begins with the introduction of a new programming concept. The teacher gives a Java example showing its use, and assigns one or two exercises to be done individually. Exercises are well-structured and can be solved by applying lessons learned up to that point. Exercise answers are occasionally discussed by the teacher. Projects done individually or by pairs provide students with the opportunity to integrate new knowledge with previous lessons.

To solve the exercises, most students modify existing programs. They can find all the information they need in the lectures, although they may need to develop the algorithm themselves. They immediately code their solutions and focus on getting it to compile and run, producing programs that are syntactically correct but logically wrong. Some make small, random changes in the hope of solving the problem.

Some students cannot or do not want to invest the time and effort required to solve the problem on their own. They wait for their classmates to finish the solutions and then ask them for help. Because their grades are mostly based on output (a program), a few students submit work that is not significantly their own. Although almost all students are able to submit some kind of program, few can confidently say that they know what they are doing.

As mentioned, class lectures are the main source of information. Links to program documentation and other tutorials are occasionally included, but how to find and interpret additional information is not discussed. Advanced students consult primary sources such as program documentation and discover additional features that they incorporate into their programs. Other students rely on the advanced students for help and ideas. When faced with other problems or incomplete information, many students do not know where to start or where to find the information they need.

Students who have finished the course describe it as a language-oriented course where people learn how to program in Java. Although many find programming interesting, they do not recognize computer science concepts and applications in other fields. Accustomed to "spoonfeeding" and well-defined instructions, they falter when confronted with the ill-structured and ill-defined problems that characterize computer science in the real world.

Introductory computer science naturally requires students to apply their knowledge by solving exercises and working on projects, and students learn a lot by working on these things. How can we improve these activities to help our students prepare better for the real world? How can we help them develop stronger problem-solving and independent learning skills?

problem-based learning

what is problem-based learning?

\textbf{Problem-based learning}

like all approach

how will it affect lesson-planning?

what are the roles of teachers and students?

what skills do students need to have in advance?

what is its theoretical support?

In particular, beginners might have a piaget

How can technology support problem-based learning?

Beginners need



how will PBL help us solve the problems raised?


what are some of the weaknesses of PBL? how can we address them?

need problem solving skills in advance

coverage of curriculum topics

how to assess

different concept of learning




situation, groupings, bridge, questions, exhibit, reflection

R3 R4 - template for planning activities

nice mind map


long article on constructivism, quite good


ill-structured domain

Computer science is an ill-structured domain CAI tools and hypertext can help

collaborative learning





R10 Very helpful guidelines!

constructive design

R11 parkside

free inquiry?





R1: http://www.artsined.com/teachingarts/Pedag/Constructivist.html R2: http://www.emtech.net/links/construc.htm R3: http://www.prainbow.com/cld/cldp.html R4: http://www.prainbow.com/cld/cldn.html R5: http://www.uib.no/People/sinia/CSCL/HMM_Constructivism.htm R6: http://umperg.physics.umass.edu/physicsEdResearch/reviewPaper R7: http://www.ilt.columbia.edu/ilt/papers/Spiro.html R8: http://scholar.lib.vt.edu/ejournals/JTE/jte-v7n1/gokhale.jte-v7n1.html R9: http://www.edb.utexas.edu/mmresearch/Students97/Rutledge/html/constructivism.html R10: http://www.bsu.edu/teachers/departments/edld/conf/constructionism.html R11: http://www.ilt.columbia.edu/publications/cdgcs.html R12: http://www.inform.umd.edu/UMS+State/UMD-Projects/MCTP/Essays/Strategies.txt R13: http://www.inform.umd.edu/UMS+State/UMD-Projects/MCTP/Essays/Constructivism.txt R14: http://www.atl.ualberta.ca/presentations/activelearn/activel.html R15: http://home.okstate.edu/homepages.nsf/toc/EPSY5720cml12 R16: http://unr.edu/homepage/jcannon/ejse/ejsev2n2ed.html R17: http://dougiamas.com/writing/constructivism.html