CS 6/79995 ST: Program Comprehension & the Psychology of Programming

 

Instructor:       Dr. Jonathan I. Maletic

Term:              Spring 2008

Credit hours: 3

 

Course Objective:

The objective of this course is to investigate the material on the cognitive and mental models of how people 1) learn to program, 2) understand existing large programs.  This material forms the basis for educational methods in introductory programming course.  Additionally, it forms the basis of the software environments that are being constructed to assist software engineers to build, maintain, and evolve software systems.

 

Prerequisites:

One advanced course in software development/engineering is helpful but not necessary.  Good knowledge of at least one programming language is necessary.  The course is open to graduate students in Computer Science, Psychology, Education, or a related discipline.  Permission of the instructor is necessary for the student will little background in computer science.

 

Course Topics:

·        cognitive models of software comprehension;

·        issues of novice versus expert programmer;

·        how people learn to program

·        methods for teaching introductory programming

·        environments for learning to program;

·        reverse engineering of software systems;

·        environments for program understanding and maintenance;

·        software visualization for program comprehension

 

References:

·        There is no existing textbook dealing with this material.

·        A reading list of journal articles, conference papers, and technical reports will be posted on the web page for this course

 

Partial Reading List on Cognitive Models of Program Understanding:

[Fix'93]  Fix, V., Wiedenbeck, S., and Scholtz, J., (1993), "Mental representations of programs by novices and experts", in Proceedings of Conference on Human Factors and Computing Systems (INTERCHI'93), Amsterdam The Netherlands, April 24-29 pp. 74-79.

[Koenemann'91]  Koenemann, J. and Robertson, S., (1991), "Expert Problem Solving Strategies for Problem Comprehension", in Proceedings of Conference on Human Factors and Computing Systems (CHI'91), New Orleans, LA, April 27 - May 2 pp. 125-130.

[Biggerstaff'94]  Biggerstaff, T. J., Mitbander, B. G., and Webster, D. E., (1994), "Program Understanding and the Concept Assignment Problem", CACM, vol. 37, no. 5, May pp. 72-82.

[Fischer'87]  Fischer, G., (1987), "Cognitive View of Reuse and Redesign", IEEE Software, vol. 4, no. 4, July pp. 60-72.

[Brooks'83]  Brooks, R., (1983), "Towards a Theory of the Comprehension of Computer Programs", International Journal of Man-Machine Studies, vol. 18, no. 6, pp. 543-554.

[Letovsky'86]  Letovsky, S., (1986), "Cognitive Processes in Program Comprehension", in Empirical Studies of Programmers, Albex, pp. 58-79.

[Letovsky'86]  Letovsky, S. and Soloway, E., (1986), "Delocalized Plans and Program Comprehension", IEEE Software, vol. 19, no. 3, May pp. 41 - 48.

[Littman'86]  Littman, D. C., Pinto, J., Letovsky, S., and Soloway, E., (1986), "Mental Models and Software Maintenance", in Empirical Studies of Programmers, Albex, pp. 80 - 98.

[Rist'92]  Rist, R., (1992), "Plans in Program Design and Understanding", in Proceedings of Workshop Notes for AI & Automated Program Understanding, AAAI-92, San Jose CA pp. 98-102.

[Rugaber'90]  Rugaber, S., Ornburn, S. B., and LeBlanc, R. J., (1990), "Recognizing design decisions in programs", IEEE Software, vol. 7, no. 1, January pp. 46-54.

[Soloway'84]  Soloway, E. and Ehrlich, K., (1984), "Empirical Studies of Programming Knowledge", IEEE Transactions on Software Engineering, vol. 10, no. 5, September pp. 595-609.

[Soloway'88]  Soloway, E., Adelson, B., and Ehrlich, K., (1988), "Knowledge and Processes in the Comprehension of Computer Programs", in The Nature of Expertise, M. Chi, R. Glaser and M. Farr, Eds., A. Lawrence Erlbaum Associates, pp. 129 - 152.

[von Mayrhauser'95]  von Mayrhauser, A. and Vans, A. M., (1995), "Program Comprehension During Software Maintenance and Evolution", IEEE Computer, vol. 28, no. 6, August pp. 44-55.

[von Mayrhauser'97]  von Mayrhauser, A. and Vans, A. M., (1997), "Program understanding behavior during debugging of large scale software", in Proceedings of Seventh workshop on Empirical studies of programmers, pp. 157–179.

[Woods'96]  Woods, S. and Yang, Q., (1996), "The Program Understanding Problem: Analysis and A Heuristic Approach", in Proceedings of ICSE, pp. 6-15.

[Wiedenbeck'91]  Wiedenbeck, S., (1991), "The Initial Stage of Program Comprehension", International Journal of Man-Machine Studies, vol. 35, no. 4, pp. 517 - 540.

 

Course Format and Grading:

The course will be a seminar format.  The instructor will lead off with a number of lectures on specific areas and topics, then the students will present a number of selected papers related to the theme of the course.  Question & answer sessions and discussions of all presentations and lectures are a central and vital part of the course.

 

The grade will be derived from daily class participation (questions/answers), paper reviews, presentations, and a research project/paper.

·        Daily Class Participation 20%

·        Presentations (3 or 4) 20%

·        Paper Reviews (2-4) 5%

·        Project Presentation  5%

·        Project 50%

 

 

Projects:

A course project will comprise the bulk of the grade.  Projects can be done by individual students or by small teams.  A number of suggested projects will be posted and presented.  Other project topics that are within the scope of the course can be proposed.  Project can be tools, studies, experiments, or surveys.  A project proposal will be required during the first half of the term.  This will be evaluated and refined in conjunction with the instructor.

 

Last updated: 01/09/2008