CS 111: Introduction to Computer Science

Course Information

Book

The textbook for this class is Python Programming: An Introduction to Computer Science, by John M. Zelle.

Grading

Your grade in the course will be determined by your performance on one in-class midterm exam shortly before midterm break (20%), one takehome exam near the end of the term (20%), a final project due the last day of finals (20%), and homework (40%).

Getting help

When you have questions, there are lots of places to go for help. Questions related to the course content are best answered by your professor, who hereby requests that you come to ask him questions now and then because otherwise he gets lonely. No prof available? Try the course prefect (Ben Cochran), a lab assistant (see the schedule posted in or near the labs CMC 304 and 306), or Mike Tie (CMC 305). Don't suffer needlessly when you're having trouble. Ask for help.

Where to work

All of the software required to do the assignments for this course is installed on the Macintoshes found in CMC 304 and 306. You can go to one of those labs, login using your usual Carleton user name and password, and get to work.

You may, of course, wish to work on your own computer. In that case, you'll need to install Python on your computer. A couple times during the term, you will need additions to Python to do some of the assignments. As always, you can use the lab computers, but if you want to use your own computer you'll have some additional installations to do later in the term. If you have trouble setting up your computer, you can get help from Mike Tie (mtie@carleton.edu, CMC 305).

How to submit your homework

Most of your homework in this class will involve writing computer programs. To submit a program, you can drag it to your Courses/.../hand-in/ folder. Here are detailed instructions on how to connect to the Courses folder..

Alternatively, if you're using one of the CS department's lab computers, you can use the Homework Submission Program (HSP) to submit your work. HSP is generally pretty convenient if you are working on one of the 3rd-floor CMC lab computers. But even so, you're probably better off just using the Courses folder.

If you have trouble handing in your work, please speak with Mike Tie (CMC 305), the course prefect, or somebody at the SCIC.

Sometimes, you'll submit a program and then want to submit a revision. The way the hand-in system works, once you have submitted a file, you can't delete it and submit a new one with the same name. (The point of this prohibition, by the way, is two-fold. It prevents accidental deletion of students' work. It also prevents a common scam in which the student claims to have submitted the assignment on time, but then overwritten it the next day to fix some minor item like a missing name or footnote.) If you want to resubmit an assignment program by adding a number. For example, if your original submission was called menu.py and you have a revision to submit, call the revision menu2.py. Need another revision? Call it menu3.py, etc. Using this system will make it easy for the grader and me to identify the program you want us to grade.

If you work with a partner on an assignment, put both of your names in the comment at the top of the program, and then choose just one of you to hand in the code.

Important: Note that I will specify the program name I want you to use for each assignment. For example, your first programming assignment, due September 18, includes the statement "Hand in as counter.py." This means that you shouldn't name your program "assignment1.py" or "mycoolcounter.py" or anything else--just counter.py. If you all follow this rule, it makes the job of the grader (Alex Day or me, depending on the assignment) a lot easier.

Late homework

Homework submitted after the due time but within 24 hours will be docked 50%. After that, you're out of luck. If you know you're going to have trouble with a particular deadline, please let me know as early as possible, and we'll work something out.

One more homework note

For the first half of the term, you will have a short programming assignment due every class day. In the second half, we will focus on more sophisticated programs, and the assignments will be less frequent.

Collaboration

Working with your classmates is usually a good thing. Sharing insights can be fun, and can enhance everybody's learning. The main danger of collaborating on course work is in allowing your collaborator to do all the work, and thus all the learning. If you want to work together on homework for this class, that's fine with me, but take care not to fall into collaboration's traps.

For programming assignments in this class, you may work alone or with one other person. If you work with a partner, you should submit one copy of the code with both students' names in the comments at the top of the program.

For all other assignments, you may work with others, but should write up your answers individually.

If you have any doubts about what constitutes acceptable collaboration, contact me and we'll discuss it.

In-class lab sessions

On most Fridays, we will meet in CMC 306 so you can work on lab exercises. The process for these sessions will go like this:

Rough Schedule

This schedule is only an approximation of the structure of the course, but it should be reasonably close to what actually happens. I have included chapters from Zelle's book that will be relevant during some of the weeks.