CMSC 131A: Systematic Program Design I
Fall, 2017
Program design is the study of systematic thought, planning, and universally useful problem-solving skills applied in the setting of programming and computation.
CMSC 131A is an introduction to computing and programming. Its major goal is to introduce students to the principles of systematic problem solving through programming and the basic rules of computation.
Caveat: Note that CMSC 131A is being offered on a trial basis as an alternative introductory course sequence. If you take CMSC 131A you must take CMSC 132A as a subsequent course. This course will not prepare you for the traditional CMSC 132 (no "A") course. However, students who complete the 131A-132A sequence will be fully prepared for all subsequent courses that list 131-132 as prerequisites.
By the end of the course, majors in computer science will have a sense for difference between a programmer and a well-trained software developer. Students from all majors will have a sense of the complexities involved in developing solid software (highly useful in case they ever collaborate with such professionals) and they ought to be able to use the principles of programming to solve many non-computational problems in a systematic manner.
Masterful programmers design programs the way Jacques Pépin makes an omellete: with systematic technique, honed creativity, and a strong aesthetic (“There’s the Wrong Way and Jacques Pépin’s Way,” New York Times, Oct. 18, 2011).
This course exposes students to the fundamental techniques of program design: “an approach to the creation of software that relies on systematic thought, planning, and understanding from the very beginning, at every stage and for every step” (HtDP/2e, Preface). While taking this course will not make you a great programmer, you cannot become a great programmer without mastering these skills. More importantly, even if you never program again, a student of design “will still pick up universally useful problem-solving skills, experience a deeply creative activity, and learn to appreciate a new form of aesthetic.”
Assumptions: The course does not assume any prior
programming experience. It is therefore suitable for all freshman
students—
Disclaimer: All information on this web page is tentative and subject to change until the start of the semester.
Staff | |||
Name | Office | E-mail (@cs.umd.edu) | Office Hours |
3439 AVW | dvanhorn | 2-4pm, Mon | |
Nicholas Labich | 1112 AVW | labichn | 2-4pm, Fri |
Samuel Barham | 1112 AVW | sbarham | 2:30-3:30pm, Mon, Wed |
Cameron Moy | 1112 AVW | camoy | 1-3pm, Thurs |
Austin Bourgerie | 1112 AVW | abourg | 12-2pm, Fri |
Thomas Harris | 1112 AVW | tharris | 10-11am, Mon, Wed |
Rachael Zehrung | 1112 AVW | rzehrung | 11am-12pm, Tue, Thurs |
Jack Qian | 1112 AVW | jqian | 12-2pm, Wed |
Location |
| 1115 CSI |
Time |
| MWF 11:00am–11:50am |
Midterm 1 |
| Oct 2, in class |
Midterm 2 |
| Nov 6, in class |
Final exam |
| Dec 15, 8–10 am |
Textbooks |
| How to Design Programs, 2nd edition, Felleisen, et al. |