Welcome to CS35. This course continues the broad introduction to computer science begun in CS21, providing a general background for further study in the field. Topics to be covered include object-oriented programming in C++, advanced data structures (such as priority queues, trees, hash tables, and graphs), advanced algorithms, as well as software design and verification.
To enroll in this course you must have completed CS21 or obtain permission from the instructor. This course is designated as a natural sciences and engineering practicum.
By the end of the course, we hope that you will have developed the following knowledge and skills:
CS35 Ninjas (student mentors): Phil Koonce, Greg Rawson, Nick Rhinehart, and Chloe Stevens
The CS Ninjas will assist me in our in-class lab sessions and run study sessions in the main CS lab (Science Center 240) on Monday evenings from 7 - 11 p.m.
You are encouraged to participate in these study sessions to prepare for quizzes, to discuss programming concepts, and to get friendly assistance in working on homework assignments.
Grades will be weighted as follows:
| 40% | Lab assignments |
| 25% | Quizzes |
| 5% | Class participation |
| 30% | Final exam |
Quizzes will be given at the beginning of class on the days posted in the Announcements section of the Schedule. Please look over these dates carefully and contact the professor in advance if you cannot be in class for a quiz.
If you are not present at the start of class on the day of a quiz, but make it to class before the end, then you may take the quiz. Otherwise you will receive a zero for that quiz.
Unlike CS21, lab attendance in CS35 is required. New lab assignments will be introduced in our Friday lab sessions, and lab sessions will sometimes contain new course material, required practice exercises, and written quizzes.
Lab assignments are submitted electronically using the handin35 program, and are typically due by 11:59 p.m. on Wednesday nights. You may submit your assignment multiple times, but each submission overwrites the previous one and only the final submission will be graded. Late assignments will not be accepted unless you contact the professor before the deadline, and even then extensions are only provided for extreme circumstances beyond your control. Even if you do not fully complete a lab assignment you should submit what you have done to receive partial credit.
Academic honesty is required in all work you submit to be graded. With the exception of your lab partner on lab assignments, you may not submit work done with (or by) someone else, or examine or use work done by others to complete your own work. Your code should never be shared with anyone; you may not examine or use code belonging to someone else, nor may you let anyone else look at or make a copy of your code. This includes sharing solutions after the due date of the assignment.
All code you submit must be your own with the following permissible exceptions: code distributed in class, code found in the course text book, and code worked on with an assigned partner. In these cases, you should always include detailed comments that indicates on which parts of the assignment you received help, and what your sources were.
Discussing ideas and approaches to problems with others on a general level is fine (in fact, we encourage you to discuss general strategies with each other), but you should never read anyone else's code or let anyone else read your code. You may discuss assignment specifications and requirements with others in the class to be sure you understand the problem. In addition, you are allowed to work with others to help learn the course material. However, with the exception of your lab partner, you may not work with others on your assignments in any capacity.
``It is the opinion of the faculty that for an intentional first offense, failure in the course is normally appropriate. Suspension for a semester or deprivation of the degree in that year may also be appropriate when warranted by the seriousness of the offense.'' - Swarthmore College Bulletin (2008-2009, Section 7.1.2)
Please see me if there are any questions about what is permissible.
CS35 is substantially faster-paced than CS21, covering a broad range of topics. To succeed you should:
For the reading assignments the section numbers are inclusive, so "1.1-1.1.2" means you should read all the sections from 1.1 up to and including section 1.1.2.
| WEEK | DAY | ANNOUNCEMENTS | TOPIC & READING | LAB |
| 1 | Aug 29 | Introduction to C++ Ch1: 1.1-1.1.2, page 10(strings), page 16(using), 1.2-1.4.1 |
Intro / Lab 0 Lab 1 |
|
| Aug 31 | ||||
| Sep 02 | ||||
| 2 | Sep 05 | Object-oriented design in C++ Ch1: 1.5-1.5.2, 1.6-1.7.4 Ch2: 2.1-2.2.5 |
Lab 2 | |
| Sep 07 | ||||
| Sep 09 | Drop/Add ends | |||
| 3 | Sep 12 | Quiz 1 study guide | Complexity analysis Ch4: (all) |
Lab 3 |
| Sep 14 | ||||
| Sep 16 | Quiz 1 | |||
| 4 | Sep 19 | Lists Ch6: 6.1-6.1.3 Ch3: 3.2-3.2.4 Ch6: 6.2-6.2.3 gdb commands gdb guide |
Lab 4 | |
| Sep 21 | ||||
| Sep 23 | ||||
| 5 | Sep 26 | Quiz 2 study guide | Stacks and queues Ch5: 5.1-5.2.5 |
Lab 5 |
| Sep 28 | ||||
| Sep 30 | Quiz 2 | |||
| 6 | Oct 03 | Sorting Ch11: 11.1-11.3 |
Lab 6 | |
| Oct 05 | ||||
| Oct 07 | ||||
Oct 10 |
Fall break |
|||
Oct 12 |
||||
Oct 14 |
||||
| 7 | Oct 17 | Quiz 3 study guide | Trees Ch7: 7.1-7.3.3, 7.3.6 Ch10: 10.1-10.1.2 |
Lab 7 |
| Oct 19 | ||||
| Oct 21 | Quiz 3 | |||
| 8 | Oct 24 | Balanced search trees Ch10: 10.2-10.2.1, 10.4 |
Lab 8 | |
| Oct 26 | ||||
| Oct 28 | ||||
| 9 | Oct 31 | Quiz 4 study guide | Priority queues Ch8: 8.1-8.1.3, 8.1.5, 8.3-8.3.3, 8.3.5 |
Lab 9 |
| Nov 02 | ||||
| Nov 04 | Last day to declare CR/NC or withdraw with a "W" Quiz 4 |
|||
| 10 | Nov 07 | Dictionaries and hash tables Ch9: 9.1-9.1.1, 9.2-9.2.6, 9.5-9.5.1 |
Lab 10 | |
| Nov 09 | ||||
| Nov 11 | ||||
| 11 | Nov 14 | Quiz 5 study guide | Introduction to graphs Ch13: 13.1-13.3.2, 13.3.5-13.5 |
Lab 11 |
| Nov 16 | ||||
| Nov 18 | Quiz 5 | |||
| 12 | Nov 21 | Shortest paths Ch13: 13.6 |
Lab 11 continued | |
| Nov 23 | ||||
Nov 25 |
Thanksgiving |
|||
| 13 | Nov 28 | Quiz 6 study guide | More graphs | |
| Nov 30 | ||||
| Dec 02 | Quiz 6 | |||
| 14 | Dec 05 | Final study guide | Course wrap-up | |
Dec 09 |
Final 9am–noon Sci 128 |
|||