Course Description
This course couples work on program design, analysis, and verification with an introduction to the study of data structures that are important in the construction of sophisticated computer programs. Because we will be interested in studying more modern techniques for designing large, complex, and reusable code, we will be using the object-oriented programming language, Java.
You will be expected to write a collection of programs, ranging from very short programs to more elaborate systems. Since one of our goals in this course is to teach you how to write large, reliable programs composed from reusable pieces, we will be emphasizing the development of clear, modular programs that are easy to read, debug, verify, analyze, and modify.
Equally important is the ability to analyze programs using big-"O" notation to understand their runtimes. This will help us evaluate the trade-offs in different choices of algorithms and data structures.
The formal pre-requisite for this course is Pomona CS 54. We also assume that all students enrolled are comfortable writing small to medium-sized programs (around 500 lines of code with several interacting classes) in either Java, Python, or Grace. The knowledge assumed is generally equivalent to that of CSCI 051 as offered at either Pomona or CMC or the Computer Science advanced placement exam. Be aware that neither CS 5 at HMC or CS 30 at Pomona satisfy the prerequisites for this course. If you have any doubts as to whether your programming experience is sufficient for this course, please see us as soon as possible.
By the end of this course, you should have a good understanding of object-oriented design, coding and debugging of programs in Java, and of how one might analyze programs for efficiency. In particular, you will understand the trade-offs involved in selections of different data structures and algorithms to solve computational problems.
This course is a prerequisite for most upper level Computer Science courses. As part of continuing curricular changes in CS, sections of CS 62 will no longer teach C or C++. Instead that material will be taught in CS 105 taught at Pomona. Students should be aware, however, that sections of CS 105 taught at HMC will assume programming background in C. Thus students wishing to take that course at HMC will be required to learn C on their own.
Academic Accommodations
If you are seeking academic accommodations, you must contact your home college’s disability coordinator to establish accommodations. You should plan to meet with your coordinator to discuss appropriate accommodations and may be asked to provide documentation necessary to verify disabilities. Further information is available from the Student Disability Resource Center at CUC. Once your coordinator verifies your status, we will receive an email from them indicating what accommodations are recommended.
Use of electronics in the classroom
Several studies (and our in-person personal experience) have shown that use of electronic devices can be distracting and interfere with learning. We understand that after more than a year of remote learning this might have changed. We ask you to use laptops, tablets, and cell phones only if they are necessary for classroom activities, e.g., to take notes.
COVID-19 Safety Awareness
The faculty at Pomona College knows that person-to-person interaction provides the best liberal arts education. The best learning occurs in small communities. This year we are gathering in person for what we do best: create, generate, and share knowledge. During the past academic year, we built community remotely, and this year we will build on the pedagogical improvements we acquired last year. For example, some of our office hours and written Q&As will be online.
Our health, both mental and physical, is paramount. We must consider the health of others inside and outside the classroom. All Claremont Colleges students have signed agreements regulating on-campus behavior during the pandemic; in the classroom, we will uphold these agreements. We need to take care of each other for this course to be successful. We ask you therefore to adhere to the following principles:
- there is a mask mandate for all indoor spaces on campus. You must wear a mask for the entire class; eating and drinking are not permitted. If you need to drink water, please do quickly so and put back your mask. Your mask must cover your mouth and nose. The college has zero-tolerance for violations of this policy, and our shared commitment to the health and safety of our community members means if you come to class unmasked you will have to leave class for the day.
- If you need to miss class or lab for health reasons, concerning symptoms, suspected Covid exposure, unexpected dependent care, technology issues, or other emergency reasons we will work with you. Let us underscore this: please make your decisions always based on health, safety, and wellness—yours and others—and we will work with you at the other end. Take any potential symptoms seriously; we’re counting on each other.
- When not in class, avoid closed public spaces, and if you can't avoid them: wear your mask properly, wash your hands, and maintain social distance. If you, or a family member, are experiencing hardship because of the pandemic, talk to us or to someone in the Dean of Students office. You are not alone during this time.
The pandemic is fast-moving, and we might have to adjust these principles as the semester evolves. We are always happy to receive your feedback to make this course work.
Let’s care for each other, show empathy, and be supportive. While there will likely be some community transmission and breakthrough infections, together, we can minimize their effect on our community and on your learning.
Instructors: |
Alexandra Papoutsaki
Thomas Yeh |
Lectures: | TR 1:20-2:35 p.m., Edmunds 101 |
TAs: | Alan Guo, Aidan Garton, Mercy Bickell, Adeena Liang, Camille Mince, Erin Puckett (head TA), Emily Tomz, Emily Zhang |
Mentor sessions: | M 2-4pm (Millie), T 7-10pm (Alan), T 7-8pm (Aidan), R 7-9pm (Erin), F 1-3pm (Emily T.), F 12-2pm (Adeena), Sa 3-5pm (Emily T.), Su 6-8pm (Emily Z.) |
Learning Communities: | 1: M 2-4pm (w/ Mercy at 2-3pm), 2: M 7-9pm (w/ Aidan at 7-8pm), 3: R 7-9pm (w/ Aidan at 7-8pm), 4: M 9-11am (w/ Erin at 10-11am), 5: F 10am-noon (w/ Adeena at 11am-noon), 6: F 1-3pm (w/ Adeena at 2-3pm), 7: F 7-9pm (w/ Aidan at 7-8pm) |
BBICS: | F 3-5pm (Naomi Amuzie) |
Labs: | W 1:20-4:20 p.m., in Edmunds 219 and 229 |
Textbook: |
Robert Sedgewick and Kevin Wayne, Algorithms, 4th edition. Addison Wesley Press. The book is available for purchase at the Huntley Bookstore. |
Textbook companion: | The textbook comes with a companion website that contains chapter summaries, code, and exercises. |
Schedule
You should consult this page regularly to see the most current version of the schedule of topics and readings.
You should complete all assigned readings and attempt to work all the problems at the end of each section as you are reading. They will be good practice for the regular quizzes during the first ten minutes on Thursday mornings, and may also appear on the midterm or final.
Lab Date | Lab | Assignment Due | Assignment |
Sep 1 | Introduction | Sep 1 | Introduction |
Sep 8 | Silver Dollar Game | Sep 14 | Graphic Silver Dollar Game |
Sep 15 | Timing | Sep 21 | Darwin |
Sep 22 | Debugger | Sep 28 | Darwin, cont. |
Sep 29 | Midterm I prep | Oct 5 | Calculator |
Oct 6 | JUnit | Oct 12 | Compression |
Oct 13 | Linked Lists implementation | Oct 19 | Compression, cont. |
Oct 20 | Mergesort | Oct 26 | Compression, cont. |
Oct 27 | Binary Trees | Nov 2 | On-disk sort |
Nov 3 | Git | Nov 9 | Autocomplete |
Nov 10 | Midterm II prep | Nov 16 | Hex-A-Pawn |
Nov 17 | Profiling | Nov 23 | Text Generator |
Nov 24 | No lab | Nov 30 | Maps |
Dec 1 | Ethics | Dec 7 | Maps, cont. |
Documentation & Handouts
The following documents provide information on the standard Java libraries and the additional libraries we have developed for this course:
- Submission Instructions
- CS 62 Style Guide
- Algorithms 4 materials
- Java materials
- Java Tutorial from Oracle
- Java 11 classes
- Programming with Assertions
- Moti Ben-Ari's Guide to Compile and Runtime errors in Java
- Iterating over collections in Java 8
- Streams
- Java Graphics
- JUnit materials
Exams
There will be two in-class midterm exams plus a scheduled final exam. We will place sample midterm exams on-line approximately a week before each exam. There will also be quizzes every Thursday except the first week of classes. The quizzes will be during the first ten minutes of class. No make-ups will be allowed, but the lowest score will be dropped to make up for illness or other absences.
- Midterm examination 1: Thursday, Sep 30.
- Midterm examination 2: Wednesday, Nov 11.
- Final examination: Thursday, Dec 16, 2-5 p.m., in class.
Grading Summary
Component | Weight |
Weekly Programming Assignments | 35% |
Midterm 1 | 15% |
Midterm 2 | 15% |
Final Exam | 25% |
Labs | 5% |
Quizzes | 5% |
Total | 100% |