Syllabus
Introduction
This course focuses on two things:
- Teaching you to program
- 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:
- Numbers and arithmetic
- Strings and string processing
- Variables and assignments
- Basic input/output
- Methods and method calls
- Control structures: branches and loops
- Recursion
- Arrays and hashes
- File input/output
- Blocks and iterators
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:
- Chris Pine. Learn to Program. The Pragmatic Programmers, 2006. ISBN: 978-0-9766940-4-5.
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.
Grading
Your grade will be based on the following components and weights:
- 40% : Labs
- 20% : Quizzes
- 20% : Midterm exam
- 20% : Final exam
The grade scale is as follows:
- A: 90%-100%
- B: 80-89%
- C: 70-79%
- D: 60-69%
- E: 0-59%
Grades are never curved, but exam scores will be adjusted so that the class average is at least 70%. Note that you must score at least 50% on both 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. In general there will be a homework portion that needs to be completed before arriving at lab, and an “inlab” portion that you will complete during lab with the TA’s help. Both will be graded by the TA on a weekly basis. Labs will be posted on the course blog.
Exams and Quizzes
The midterm exam is scheduled for October 15th, and will occur in place of lecture. There will be no make-up exams unless they are cleared with me at least a week beforehand. The final, comprehensive, exam will occur at the time and place set by the official IIT final exam schedule. Both exams will be closed-book, closed-notes, calculators-permitted.
Late Policy
An assignment is late if it is not turned in by 11:59PM of the due date. Lab assignments, more specifically, are considered late if they are not turned in by the end of the corresponding lab session. Late assignments, unless cleared in advance with the instructor, are subject to a 10% reduction in points for each day late. After 1 week (7 days), an assignment will not receive any points at all, but may be submitted for feedback.
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, and online at http://www.iit.edu/~osa/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.
Leave a comment
You must be logged in to post a comment.