Quantitative Reasoning 20, Spring 2010


Quantitative Reasoning 20 is an introductory computer programming course whose scope ranges from details of computer architecture to scripting graphical user interfaces. It can be distinguished from Computer Science 50, the other major introductory programming course for undergraduates, by its reduced depth on some topics and significantly less complex homework assignments. Students completing QR 20 with a B or better will have programming skills sufficient to write programs easily and quickly for their research, be able to learn any modern programming language quickly and be employable as applications programmers. Students may also be choosing between QR20 and Computer Science 1. The latter is an excellent coverage of a wide range of computing concepts, but spends less time developing practical programming skills.

The course will be taught in lectures, weekly discussion and review sections and weekly or biweekly homework assignments. There will be a mid-term exam on Thursday, March 11, and a regular 3 hour final exam in May. Grades will be based on homework performance (40%), mid-term exam grade (15%), final exam grade (35%) and performance in section discussions (10%). Students achieving 90% of the maximum score are assured an A. Those achieving 75% are assured a B- or better. Students achieving less than 50% of the maximum score will receive an unsatisfactory grade, a D or E depending on the effort they have made in the course. Since the homework assignments are a part of the evaluation for the course, it is important that students work on them independently. If you are having problems with an assignment you should discuss it with your section leader instead of getting help from another student. Turning in another student's work is plagiarism and is dealt with harshly by the College's administration.

The course will be taught principally in the Python programming language. It is a modern, object-oriented language which is easy to start with, but is very powerful in its extensions. The Python Interpreter and documentation can be downloaded for free from the www.python.org web site (see the "useful web links" on the left side of the QR20 home page). Ask your Teaching Fellow for help in doing this if you have problems. Students with Macs or the LINUX operating system may already have Python installed, but it still might be useful to download and install the latest version.

We will section the course using the registrar's sectioning program with which some of you may be familiar. Use the Sectioning link under web links for the course and follow the directions there. You must provide your sectioning information STARTING 9AM ON WEDNESDAY JANUARY 27 and NO LATER THAN 5PM ON SUNDAY, JANUARY 31. You will be notified by email when section assignments are made that evening. Sections will meet for the first time during the week of February 1.

There is no text for the course. All of the material will be presented in lecture and section. Therefore it is essential that you attend both. Lecture notes will be posted on the course web site shortly after each lecture. The lectures will be supplemented by suggested study of the tutorial on Python by Guido van Rossum (it is downloaded automatically when you download and install Python, but you may also browse it and other tutorials through the LINKS button on the course home page).

The major lecture topics for the course are:

1. Basic Programming Concepts, January 26,28,  February 2,4,.
2. What Computers Really Do - hardware fundamentals, machine language programming. February 9,11,16,18.
3. Designing, writing and debugging programs. February 23,25, March 2,4,9.
4. Searching and Sorting - famous algorithms and data types. March 23,25,30, April 1.
5. Introduction to Classes, Objects and Methods. April 6,8,13,15.
6. Graphics and Event Driven Programming. April 20,22,27,29.