CS0007: Fall 2009

Overview

Welcome to CS0007, an Introduction to Computer Programming! This course teaches the basics of programming, using Python, which is an industrial-strength programming language used at companies like Google and Industrial Light and Magic.

The course consists of 2.5 lecture hours per week, weekly CodeLab exercises, 50-minute weekly labs, 3 assignments, a project, 3 tests, and a final exam. (Phew!) I am keeping you busy throughout the term because learning to program is like learning to play an instrument; if you want to play well, you need to practice regularly.

All this will give you enough practice so you can learn how to program well. Also, you will be able to work on the assignments, project, and labs with a partner.

Class Times

Lectures Labs
MW 3:00-4:15pm, SS 5129 F: 11-11:50am (12198) & 3-3:50pm (13126), SS 5502

Contact information

Instructor Email Office Office Hours
Prof Jan Wiebe wiebe [at] cs.pitt.edu Sennott Square 5409 T: 3-4pm; TH 2-3pm; or by appt (send email)

Teaching Assistant Email Office Office Hours
Nicholas Farnan nlf4 [at] cs.pitt.edu Sennott Square 6503 M: 1-3; T: 2-4; W 1-3

Course Description

This course will cover fundamental concepts in computer programming including control flow, data structures, sorting and searching algorithms, object-oriented programming concepts, accessing databases, graphical user interfaces, and good program design. You will learn how to make computers do what you want them to do. You may be planning to be a linguist, physicist, or nurse rather than a computer scientist, but whatever you do, being able to program is as important as being able to write a letter or do arithmetic. The content will be organized around useful, interesting examples, with the goal of getting you to apply your new programming skills in your own projects. And, maybe some of you will decide you do want to be a computer scientist.

Course Rationale

This is a first course in computer science programming. It is recommended both for students intending to major in computer science who do not have the required background for CS 0401, as well as for students majoring in another area. There are no prerequisites for the course.

Materials

Course Requirements

Work Weight Comment
CodeLab 5% All CodeLabs have equal weight
Labs 5% All labs have equal weight
Assignments (3) 20% 6.6% each
Tests (3) 20% 6.6% each
Project 10% A project due at the end of the term
Final exam 40% To get a C or better in the course, you must get 60% or higher on the final exam.

Webpage and CourseWeb

Course materials will be distributed via the course web page. All aspects of the course that are time dependent will be available on the schedule. This includes lecture topics, lecture notes, readings, assignments, labs, and information about the exams.

Grades will be distributed via courseweb. We will also use a forum on courseweb for questions, discussion, and information about assignments, labs, lectures, and the text. Also, you will submit your assignments and project via the dropbox on courseweb.

Lab Sessions

Lab sessions will be held during recitations. You will work in pairs. Together, you'll work through examples and explore concepts in Computer Science. The lab sessions will help you learn the material and will also give you valuable experience explaining things to each other.

Variety is the spice of life, so we'll switch up partners periodically.

The labs will be graded S/U (satisfactory/unsatisfactory). You'll earn an S grade for a lab if you attend the session, work with your partner, and complete the lab with reasonable answers. If needed, you can finish the lab after the session. Labs are due at the beginning of your next lab session. Labs after that date/time are not accepted.

Assignments

Assignments will receive numerical grades. Assignments are due at 11pm on the due date. The late penalty is 10% per 24 hours, for up to 72 hours (including weekend days). No assignments will be accepted 72 hours after the due date/time.

Assignments may be done with a partner (encouraged), or individually. You may do at most 2 assignments with the same partner.

Assignments will be submitted via the dropbox on courseweb. Instructions will be included on the assignment handouts.

Project

The project is like a large assignment. You will work with a partner or alone. The project is due at 11pm on the due date. The late penalty is the same as for assignments: 10% per 24 hours, for up to 72 hours (including weekend days). No projects will be accepted 72 hours after the due date/time.

Exams

The questions on the exams will all be similar to something we covered in lecture, on an assignment, the project, or in a lab. To study, read the text, and then use the lectures, assignments, and labs to focus studying.

See "What will be on Exam X" on the schedule to see what will be covered on Exam X.

Exams 1-3 are not cumulative. The final exam is cumulative.

The exams are closed book and notes.

The material gets more complex as the course proceeds, and later exams build on the stuff covered in earlier exams. So, keep up!

CodeLab

CodeLab is a set of online Python exercises delivered and supported by a company called Turing's Craft. They are worth 5% of your course grade, and the first set is due at the beginning of week 2. You must purchase a registration from them; the price is $15.00.


To earn full credit on a CodeLab you must:

Example 1: If there are 10 exercises, then you must attempt all 10 exercises and get at least 8/10 correct.
Example 2: If there are 3 exercises, then you must attempt all 3 exercises and get all 3/3 correct.

Note: you may complete as many exercises as you want to, for practice and studying for the exam.

Other Policies and Notes