Winter 2017


Lecture: MWF 11:30-12:20, 1:30-2:20, Instructional Office Hours:
    Tuesdays 10-11am, Google chat diana.franklin@gmail.com,
    Wednesdays 10-11am Eckhart 119,
    Fridays 2:30-4pm Eckhart 119
TAs: Xioan Ding (xiaoanding@uchicago.edu), Adam Holmes (adholmes@uchicago.edu), Maria Hyun (mhyun@uchicago.edu), Yan Liu (joey2005@cs.uchicago.edu), Suhail Rehman (). (salinawu@uchicago.edu).
Lab(CSIL 1 and 2): Wednesday 2:30-3:50, 4-5:20, Thursday 2:30-3:50, 4-5:20, 5:30-6:50

Goals

Welcome! In CS152, we extend our introduction to major computer science topics through instruction in imperative computer programming and various analytical techniques. CS152 is designed for students intending to major or minor in the subject, although others are welcome. To enroll in CS152, students must have previously taken one of the department’s first quarter courses. The specific goals of the course are these:
  • to learn imperative programming techniques,
  • to build an understanding of the memory usage of computer programs, including an awareness of the stack/heap distinction, fluency with pointers and dynamic memory allocation and deallocation,
  • to design a variety of useful data structures including lists, trees, maps, and graphs, and
  • to analyze the efficiency of certain algorithms.

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.

Getting Help

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.

Class Policies

We do not allow the use of electronic devices during lectures. They are simply too distracting. This includes laptops, smartphones, and tablets. The lone exception to this policy is for students whose handwriting issues necessitate their use of a device for note taking, who will be permitted to use a plain text editor on a laptop whose wireless capability is turned off. If you are such a student, let your instructor know.

Lab Sessions

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.

Resources

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.

Grading / Assignments

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.

Late Policy

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.

Regrade requests

Regrade requests for weekly assignments and exams must be submitted within 5 working days of when you received the grade / feedback.

Academic Honesty

In this course, as in all your courses, you must adhere to college-wide honesty guidelines as set forth at http://college.uchicago.edu/ policies-regulations/academic-integrity-student-conduct. The college’s rules have the final say in all cases. Our own paraphrase is as follows:
    Never copy work from any other source and submit it as your own. Never allow your work to be copied or seen by another student. Never submit work identical to another student’s. Never look at someone’s working solution in order to solve your error. Document all collaboration. Generally, collaboration is forbidden on the individual portion of homework assignments. Get permission before you have friends help you with your homework. Go to office hours instead. Cite your sources.

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.

Withdraws, Pass/Fail Requests

All requests for withdraws or Pass/Fail must be received before the final examination. Any requests after the final exam will be denied. Note that if you take this course P/F, you may not use it to satisfy requirements for a computer science major or minor.

Advice

Writing code that does what it is supposed to do can be joyful, even exhilarating. By contrast, fighting for hours with broken code is misery. We would like you to help you experience more of the former and less of the latter. Work methodically. Start your work well ahead of time. Beyond a certain point, it is not profitable to be stumped. If you have made no progress in some nontrivial chunk of time, say, one hour, it is time to stop and change your approach. Use one of our many support mechanisms to get some assistance (office hours, Piazza). We will help you get going again when you are stuck. We are very familiar with common mistakes that stump students for hours but require only minutes for us to identify. Please take advantage of our experience.