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 CS162 will begin to see past the superficial characteristics of computer programs to appreciate their deeper properties.
The course will essentially be an abbreviated version of CSE373 at the University of Washington, an upper-division datastructures and algorithms course, but we will use C instead of C++/Java because many of your subsequent computer systems courses at UChicago will use C. Also, we will take a few lectures to introduce C and CS373 assumes prior knowlege of C++/Java. You may refer to material from the UW course, but realize that we will be using a different language and will cover fewer topics.
We do not make use of Chalk in CS162. 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.
Due to space constraints, students should attend the labs session they are registered for. Lab sessions are optional, but are designed for the Lab TA to be able to help you with your projects. 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.
Textbook 1 (optional). The C Programming Language (Second Edition), Kernighan, Ritchie. This textbook is available on campus at the Seminary Co-op Bookstore ; you can of course find new and used copies at your favorite online bookstore as well.
Textbook 2 (optional). Data Structures and Algorithms in C++, 4th ed, by Mark Allen Weiss. There are few textbooks that use C, so you can refer to this C++ book for the conceptual material in the course. Supplemental readings in the schedule refer to this book. This book is not in the bookstore, but you can purchase it online.Software: All the software we use in this course is available free of charge for all common platforms. We will mainly use vi or emacs, clang and subversion. Windowsusers will need to download and install Cygwin, and will be able to include subversion in their Cygwin installations.
Projects will be multi-week endeavors - make sure that you don't get behind.
Each student’s final grade will be computed according to the following formula: labs 50% and exams 50%. We will scale the grades, so what precisely constitutes an A, B, etc. will be determined by the collective performance of the class.
There will be two exams. All exams are in class, and there will be no make-up exams. Documented hospitalization and death in the family are the only excused absences from exams.
We are serious about enforcing academic honesty. We will be using automated analysis tools that look for structural similarities against a database of current and previous solutions. If you break any of the 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.