These goals will be reached in part by reexamination of techniques learned in the previous quarter in a new light. Broader, more technical treatments of these topics, in particular algorithm analysis, are presented in later undergraduate courses.
We use the C programming language in our studies. C is the lingua franca of computer programmers, and one of the historic and ongoing successes in the design of practical programming languages. Having learned a second programming language well, and having viewed a variety of common problems from two distinct vantage points, students who complete CS152 will begin to see past the superficial characteristics of computer programs to appreciate their deeper properties.
We do not make use of Chalk in CS152. We will use piazza instead. We know most of you are familiar with piazza already, but please ask your instructor for help getting started with it as needed.
If you have questions about the course, and those questions are in a sense impersonal — that is, they are about course material or course logistics — we ask that you post those questions publicly on piazza, rather than contacting any of the staff members directly. This ensures you will receive the fastest, most consistent possible response from the staff. Since students usually have common questions, posting public questions is also very efficient for your classmates as well. As yet another advantage, it avoids duplication of work on the part of the staff.
In cases where you have a question that is about your own personal situation and not relevant to the class as a whole, you may ask a “private question” on piazza, which is invisible to your classmates, or send email to your instructor directly.
In addition to the office hours we provide ourselves, the College Core Tutor Program (aka “Harper Tutors”) employs computer science tutors Sunday through Thursday nights from 7pm–11pm, starting in the second week.
Students must register for and attend lab sessions each week. Lab sessions are held in the Computer Science Instructional Laboratory (also known as the CSIL); it is located on the first floor of Crerar Library. Attendance at the lab session for which you are registered is mandatory.
If you need to switch your lab time, there will be a way to do so online early in the quarter; details to follow. You will work on a department’s Macintosh computer during your lab session. You must use the department’s computer during lab and may not use your own laptop.
Textbooks: 1 (for students with experience). The C Programming Language (Second Edition), Kernighan, Ritchie. The textbook is available on campus at the Seminary Co-op Bookstore1 ; you can of course find new and used copies at your favorite online bookstore as well.
2 (for novices).
Problem Solving and Program Design in C (8th Edition)
Cheaper one here
Software: All the software we use in this course is available free of charge for all common platforms. We will mainly use vi, clang and subversion. Windowsusers will need to download and install Cygwin, and will be able to include subversion in their Cygwin installations.
There will be weekly assignments. There will also be a project that is a multi-week endeavor - make sure that you complete the suggested parts each week so you don't get behind.
Each student’s final grade will be computed according to the following formula: weekly assignments 35%, lab attendance 5%, exams 20% each. We will scale the grades, so what precisely constitutes an A, B, etc. will be determined by the collective performance of the class. You are guaranteed not to get lower than straight scale (A>=93%, A- (90->93), B+ (97->90), etc.).
There will be two midterms and a final exam. All exams are in class, and there will be no make-up exams. Hospitalization and death in the family are the only excused absences from exams.
Each student may miss a single lab without penalty. Because lab attendance is decoupled from lab work, you still must turn in your assignment.
There are no lab submissions. Make sure you commit each time your code is in working order so that you get credit for work you have completed. Instead, we will give you half the difference back on your lowest-scoring assignment. So, for example, if you do not turn in one assignment, then you will receive a score of 50% rather than 0%, providing a cushion for a one-time catastrophic error on your part. If, however, you were committing your work as you went and making progress in a way that maximizes your credit, that assignment may score 60%. Then the modified score would be 80%.
This policy is well thought out and will not be changed. It is a balance between several things. First, a single mistake, even a catastrophic one, should not destroy your grade completely. Second, it's important that there is an incentive to still try to get as much as you can get done, even if it's going to be your lowest grade, thus the difference between your lowest score being a 0 vs 60%. The purpose of a grade is to reflect performance in a course, not merely understanding, so students who do not complete homeworks must have that reflected in their final grade. Third, grading resources are expensive. Any non-automated solution (special extensions) is not reasonable in a class of this size. Fourth, the policy needs to be consistent. Any policy judged on a case-by-case basis tends to hinge on the personality of the instructor and student, inviting bias to favor students in situations similar to or familiar to the instructor, those with communication skills that lead to favors, and those who are willing to ask for favors. In order to provide equal opportunity to all students, regardless of personality, background, and current circumstances, the policy is the same for all students regardless of the reason for the request.
We are serious about enforcing academic honesty. If you break any of these rules, you will face tough consequences. Please note that sharing your work publicly (such as posting it to the web) definitely breaks the second rule. With respect to the third rule, you may discuss the general strategy of how to solve a particular problem with another student (in which case, you must document it per the fourth rule), but you may not share your work directly, and when it comes time to sit down and start typing, you must do the work by yourself. If you ever have any questions or concerns about honesty issues, raise them with your instructor, early.
We will enforce the following rule as well: any student who is under suspicion of having violated academic honesty rules will not be allowed to withdraw from this course.