Class Syllabus

Introduction

This course focuses on two things:

  1. Teaching you to program
  2. Teaching you to think like a programmer

In order to teach you to program, we'll cover the basics of a language called Ruby.  We won't cover every facet of the language, but we will cover enough to give you a feel for its basic facilities and those found in the majority of other programming languages out there.  The idea is that when you leave the class you'll know what a programming language is and how to accomplish some fairly useful things with one.

The basic elements of the Ruby language we will cover include:

Teaching you to think like a programmer is a taller order.  We'll discuss methods to analyze problems and come up with algorithmic — a fancy way of saying "provably correct in a finite amount of time" — solutions to them.  We'll discuss how to write programs that are correct, logical, and, most importantly, legible.  We'll also talk about why that last bit is so important.

Textbook

There is one required textbook for this class:

Note that the textbook is based on an online tutorial by the same author, and while the tutorial can function as a reference it is not sufficient for this class.  If you like reading on a computer screen and want to save some money, though, you can purchase the PDF version from the publisher's website at http://www.pragprog.com/titles/ltp2/learn-to-program-2nd-edition.

Grading

Your grade will be based on the following components and weights:

The grade scale is as follows:

Grades are never curved, but exam scores will be normalized so that the class average is at least 70%. Note that you must score at least 50% (after normalization) on all exams in order to pass the class.

Labs

Labs are mandatory, and are a crucial part of the class.  During lab you'll have the opportunity to test out the ideas presented in class on your own, typically by writing and testing programs.  Labs be graded by the TA on a weekly basis.  All lab writeups will be posted on the course blog.

If a lab is not submitted on the due date, it is considered late. If a late lab is submitted within a week of its original due date, it will be penalized 30%. Labs submitted more than a week late will not be given any points — this is not negotiable! Please note that it is your responsibility to regularly check on your grade spreadsheet on Blackboard and to ensure that they align with your expectations. Do not come to me at the end of the semester and tell me that you submitted all your labs but did not receive any grades on Blackboard!

Exams and Quizzes

Quizzes will be administered via the Blackboard website on a regular basis at the beginning of lab sessions. There will be absolutely no makeup quizzes. At the end of the semester the lowest two quiz grades for each student will be dropped.

The following is the tentative exam schedule (for midterms).

The final exam date/time will be published in the official IIT final exam schedule. All exams will take the place of lecture, will be cumulative, and will be closed-book, closed-notes. Makeup exams will only be granted at my discretion.

Academic Integrity

You are welcome to discuss assignments and labs with classmates, but all final work must be your own. You should take care to attribute any ideas incorporated into your work to their original source, if that source is not yourself.

The IIT code of Academic Honesty may be found in the undergraduate handbook. Any violation of this policy may result in the student receiving a failing grade for the course, and being reported to the dean of the college.