This is an old revision of the document!


PHP's gd library is missing or unable to create PNG images

Computer Science I: Problem-Solving and Abstraction

CMPU-101 Sections 03 and 04
Vassar College, Fall 2015
Syllabus / Course Wiki

Welcome to our course wiki. It will be updated throughout the semester with important course information, so check here regularly.

Professor: Marc Smith
Office: SP 104.5
Office Hours: Mon/Wed 10:30-12:00; and by appointment
Phone: 845 437 7497
Email: mlsmith (best way to contact me!)
Section 03 Mon/Wed/Fri 9:00-10:15am
Section 04 Mon/Wed/Fri 1:30-2:45pm
Room SP 309



How to Design Programs, Second Edition, by Felleisen, et al. (online)

This course 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.

The course does not assume any prior programming experience. It is therefore suitable for freshmen students—majors and non-majors alike—who wish to explore the intellectual ideas of the discipline.

The course assumes a basic familiarity with arithmetic and algebra. It does demand curiosity, self-discipline, and some amount of people skills, because all computer scientists end up working with others interactively all the time, in disciplines across the sciences and humanities.

The title of this course is Computer Science I, but the subtitle—and essence—of this course concerns problem solving and abstraction. This semester we will explore the art and science of problem solving using the computer as a tool. But a computer is not a tool in the same sense as a hammer or screwdriver, is it? A computer must run software to be useful, and that software must first be designed and implemented. This course introduces a series of Design Recipes that help develop fundamental data abstraction and problem solving skills. We will write programs in a series of student learning languages based on subsets of Racket, a modern, functional programming language. You will find that our textbook, programming languages, and programming environment were developed by the same group of people, to provide an overall integrated learning environment. The problem-solving techniques learned in this course extend seamlessly to the second semester Computer Science course, where Java and Object-Oriented programming are introduced.

We will use DrRacket v6.2, a programming environment for the Racket programming language. Racket is a descendant of Scheme, which is itself a descendant of LISP, the second oldest high-level programming language. For this course we will use the student languages (BSL, ISL, ASL) from the HtDP/2e text, and teachpacks that DrRacket provides.

DrRacket is installed on the computers in our classroom and labs. It is also freely available on the Web (see links on the left of this page) in case you wish install it on your own computer. DrRacket runs on most popular platforms (Windows, Mac OS X, Linux, and other *nixes). Programs written in DrRacket have the same behavior on all platforms. You therefore do not need to worry what kind of machine you use when you run DrRacket programs.

We are a community of learners, but we must be present to help one another. You provide a unique and valuable contribution to every class. The questions you ask help everyone understand the course material. Missing class deprives the entire class of your insights and understanding. So, please notify me before any classes or labs you know you will miss. We worry about you when you're not present. More practically, part of your grade (5%) is based on participation, and you must be present to participate (visits during office hours also count toward class participation). Excessive absences tend to hurt one's overall performance in this class.

This course is designated as a Quantitative Course, satisfying one of Vassar's three requirements for graduation, along with the Freshmen Writing Seminar and the foreign language proficiency requirement. This course will challenge you to think abstractly, analytically, and logically–as would any other designated Quantitative Course.

So here's some advice: Keep up with the reading and assignments. Topics tend to build on one another. Missing one lecture may prevent you from fully understanding the next, which may prevent you from completing a lab or assignment, and so on (you get the idea). Do your best to attend every lecture. Make arrangements with a classmate to copy material you miss when you can't attend, and don't hesitate to ask me questions whenever they arise. Visit your professor during office hours–we love to know how you feel about course material and we truly want you to enjoy the class.

To assess your understanding of the topics presented in this course, there will be daily quizzes, weekly labs and assignments, and two midterm exams (dates already set–see the table below and the schedule), and a final exam (during the final exam period).

A word about the labs: The purpose of the labs is to give you some hands-on experience with the actual tools, and to explain some of the principles from lecture with hands-on examples.

A word about the assignments: One of the purposes of the assignments is to prepare you for the exams. Some assignment problems are drawn from HtDP, the textbook; others are constructed for this instance of CMPU-101.

Exams: The exams are open book, open note, and will take place in lieu of the lab session for that week.

Attendance, Lateness, and Final Grade determination: If you are unable to attend class on the day of an exam, it is your responsibility to notify the instructor in advance to make other arrangements. Late assignments will be penalized, and will not be accepted once solutions have been discussed in class. Your final grade for the course will be calculated according to the following distribution of coursework:

5% Participation (including visits during office hours)
35% Weekly Assignments (including labs)
40% Two Midterms (Fri, Oct 2 and Fri, Nov 13)
20% Final Exam (Thu, Dec 17, 5-7pm)

Based on the weighted average of your graded coursework, your letter grade will be determined according to the standard 90, 80, 70, 60 cutoffs. For example, 90% or above is an A; 80% or above, but below 90%, is a B; etc. Pluses or minuses may be added at the instructor's discretion. Note: you must have both a passing exam average and an overall passing average to pass the course.

Please don't cheat. Read Originality and Attribution: A guide for student writers at Vassar College. Since this course is concerned with composition, the guidelines that apply to writing in general, apply equally to the writing of computer programs. Copying someone else's code without attribution amounts to plagiarism. So give proper attribution for the help you receive. School policy dictates instructors must report all suspected incidents of cheating to their department chair. Did you read the previous sentence? Please don't put yourself or your professor in that position. When in doubt, ask your professor or a coach before seeking any help from another source.

Academic accommodations are available for students registered with the Office for Accessibility and Educational Opportunity (AEO). Students in need of disability (ADA/504) accommodations should schedule an appointment with me early in the semester to discuss any accommodations for this course that have been approved by the Office for Accessibility and Educational Opportunity, as indicated in your AEO accommodation letter.

I would like to acknowledge two of the authors of How to Design Programs, Second Edition, Matthias Felleisen and Matthew Flatt, for their advice over the years in constructing the syllabus for this course, as well as lecture and assignment materials, which heavily influenced the content for this course.