CMSC 15200 - Summer 2014

Welcome

Welcome to the website for Introduction to Computer Science-2 (CMSC 15200), a course that will take place from July 28th to August 29th 2014 as part of the University of Chicago's Summer Session. This course will provide a (highly practical) introduction to computer programming using the C language and the Python scripting language with emphasis on developing general programming skills and familiarity with advance data structures.


Instructor : Lamont Samuels

Email : lamonts AT cs DOT uchicago DOT edu

Office: : Ryerson 176 (in the Annex)

Graders : Mark Maskeri, Tristan Rasmussen and Sammi Wrescher (available via Piazza).

Lectures : MWF 1:30-3:30 in Ryerson 251

Lab : W 4:00-6:00 in CSIL3-4 (CSIL Labs, first floor inside the Crerar Library)

Office Hours : M (11am-12:30pm & 3:30pm-4:30pm), F (11am-12:30pm) in my office (Ryerson 176). Mark Maskeri: W (11:30am-1pm) in CSIL I might not be available on Tuesdays & Thursdays, so please check with me beforehand if you want to drop by. Also try using Piazza!

Syllabus : PDF syllabus

Piazza : As the course gets going, the flow of questions and answers becomes steady. We will use the piazza system to help manage the traffic. You will need a piazza account to participate.

Lecture Schedule

We have five weeks to cover a number of challenging subjects. The following schedule is subject to change.

  • Week 1: Beginning C: Variables (int, double, char), Boolean expressions, Control (if, while, for), Functions.
  • Week 2: Moderate C: Functions, Testing, Arrays, Strings, Dynamic Memory
  • Week 3: Advanced C: Dynamic Memory, Structs, Data structures
  • Week 4: Advanced C: Data structures, File I/O, GUI Development
  • Week 5: Advanced Topics: Bitwise Operations, Graphs, etc… Dependent on class interests. (Final Exam: Friday August 29th)

Evaluation

Your grade in this course will be computed according to the following formula:

  • 10% lab exercises
  • 35% homework
  • 25% Quizes
  • 30% final examination

Homework

There will be weekly homework assignments due at the beginning of each class period, unless noted on the homework page. In the homework assignments, you will be required to solve a programming problem(s) related to the topics covered in class so far.

Late work will not be accepted. Our time frame is compressed and you must keep up. Exceptions to this policy will be granted only in the case of extraordinary circumstances.

NOTE: Homework assigned and due dates are subject to change with notice.

Labs

There will be five lab sessions to complement the class lectures. Attendance to the lab sessions is mandatory. Labs should not take you longer than the lab period to complete but labs will always be due by midnight on Thursdays.

Quizzes and Exams

There will be weekly quizzes held every Monday (with the exception of the first Monday of the class), unless stated otherwise. You will be given between 20-30 minutes to complete the quiz. Quizzes are closed book quizzes. And, of course, you will not be allowed to talk with your classmates during the quizzes.

For the final exam (Friday August 29th, 2014), you will be given an hour to complete the exam in class. And, again, you will not be allowed to talk with your classmates during the exam.

The quizzes and final exams are not intended to test your ability to memorize C syntax, learn algorithms by heart, or remembering exactly how a certain data structure is crafted. Rather, the goal of the exam is to test that you understand all the material seen in class and that you know how to apply all that knowledge to construct a working program.

Textbooks

There are two recommended texts for C. They are both useful but not required. For Python we will use primarily online resources.

These books are available for purchase from the Seminary Co-op Bookstore

Your are not strictly required to purchase the books, as the lecture notes should be enough to get you past the homework and the exam. However, we strongly recommend that you buy the books if you intend to continue working with C, as it can be an invaluable reference (plus the source of many interesting exercises during the course itself).

Academic Honesty

As the world of computer programming becomes ever vaster and the Internet becomes ever more populated with ripe fruits to copy and paste, your personal ethics are absolutely essential in maintaining the worth and integrity of your education. Remember that an honest failure is of infinitely greater value than a dishonest success. I can't amplify this enough.

College-wide honesty guidelines are here. The college's policies are always the last word, if there is any uncertainty.

The following rules of thumb summarize honesty as it pertains to this course:

  1. Do not copy anyone's work.
  2. Do not allow your work to be copied by anyone.
  3. Do not submit work identical to another student's.
  4. Document all collaboration.
  5. Credit your sources.

To expand on the second rule, sharing completed or partially completed work in advance of its deadline in any way, including posting to the Internet, is expressly forbidden.

When it is time to do the actual coding, writing, etc., do your own work. Your work.

Dishonest behavior will result in serious consequences.