Foundations of Computer Science

CMPU-145 Section 51
Vassar College, Spring 2019
Syllabus / Course Wiki

Welcome to our course wiki. It is the main page from which our course materials will be accessed.

Professor: Peter Lemieszewski
Office: No official office :(
Office Hours: Tuesdays 6-8 pm and by appointment
Phone: — — —-
Email: pelemieszewski (the only way to contact me, for now.)
Time Tues/Thurs 4:35pm - 5:50pm (Lectures)
Tue 8:00 - 10:00 pm (Labs)
Space SP 206 (lectures) SP309 (Labs)

Sets, Logic and Maths for Computing, Second Edition, by David Makinson Required
(available in the Bookstore, online, and from Amazon)

How to Prove It: A Structured Approach. Second Edition, by David Velleman Recommended
(also available in the Bookstore and from Amazon.)

Something to think about when it comes to textbooks and learning

In this course, we introduce a variety of fundamental, or foundational, concepts, tools, algorithms and techniques that are used throughout the field of Computer Science. They just happen to be based on mathematics. Our topics include:

  • sets,
  • relations,
  • mathematical functions,
  • proof techniques,
  • induction, and structural induction,
  • recursion, and structural recursion,
  • proving program correctness,
  • probability,
  • logic.

We'll explore these topics in class through lectures and through computer exercises as labs and homework. We will also focus on developing proof techniques in handwritten exercises. And, neatness counts!


We will be following the chapters in this book quite closely; however, there will be occasional supplements distributed in class. The material in the text will be complemented by regular programming assignments. There will be regular assignments, usually about one every two weeks. Most of the problems on these assignments will require you to write, test and run programs, similar to what you did in cmpu-101. I'll emphasize the test part throughout the semester. Some of the problems, particularly in the first part of the semester, will require you to write proofs using techniques discussed in class. Let me recommend that you use a PENCIL when writing proofs, as it is much easier to erase than ink. As mentioned above, neatness counts. Please, clearly compose your thoughts, no matter if you are writing proofs or programs. Also, programs must include concise comments - including your name - so that it is clear what you intent is. All software will be read by someone else in the future; sometimes code will need to be modified for one reason or another. It takes much longer if someone else has to figure out your intent when fixing code or adding additional function.

We will use DrRacket v6.12 (or later), a programming environment for the Racket programming language. Racket, as you know from cmpu-101, is a variant of Scheme, which is itself a descendant of LISP.

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 popular platforms. e.g. Windows, Mac OS X, Linux. Programs written in DrRacket have the same behavior on all platforms. Write once, run anywhere! That was the promise of some other programming language, too.

I will take attendance. I also understand that, sometimes, you may not be able to attend a particular class. Please let me know ahead of time if you cannot attend a class. You will still be responsible for catching up on the day's subject matter and for handing in any assignments.

We will be one in-class exam during the semester and we will also have a final exam. The exams are open-book/open-notes, but no electronic devices (e.g., no calculators or computers).

The elements of the course (exams, labs and assignments) will be weighted as follows when determining your overall grade:

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 me in advance so that we may make alternative arrangements. Late assignments will not get full credit, so get them in on time. Your final grade for the course will be calculated according to the following distribution of coursework:

30% Homework Assignments
30% Labs
20% Midterm
20% Final Exam

Please don't cheat. Read Going to the Source. Since this course is concerned with composing code, 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. Quoting from chapter X of Going to the Source, “In suspected cases of plagiarism, the instructor prepares a written statement of complaint to the Academic Panel.” 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.

Vassar College is committed to providing a safe learning environment for all students that is free of all forms of discrimination and sexual harassment, including sexual assault, relationship abuse, and stalking. If you (or someone you know) has experienced or experiences any of these incidents, know that you are not alone. Vassar College has staff members trained to support you in navigating campus life, accessing health and counseling services, providing academic and housing accommodations, helping with legal protective orders, and more.

Please be aware all Vassar faculty members are “responsible employees,” which means that if you tell me about a situation involving sexual harassment, sexual assault, relationship abuse, or stalking, I must share that information with the Title IX Coordinator. Although I have to make that notification, the Title IX office will only provide outreach by email. You will control how your case will be handled — you don’t have to read or respond to the email, and it is completely up to you whether to pursue a formal complaint. Our goal is to make sure you are aware of the range of options available to you and have access to the resources you need.

If you wish to speak to someone privately, you can contact any of the following on-campus resources:

The SAVP website ( and the Title IX section of the EOAA website ( have more information, as well as links to both on- and off-campus resources.

I would like to acknowledge professors Jonathan Gordon, Marc Smith and Luke Hunsberger for their kind assistance in developing the course, including lecture and assignment materials.