This course introduces the perspectives and methods of computer science. Symbolic information is represented as data, whether it be numbers, text, or images. Automated processes for operating on the data are represented by general procedures, known as algorithms. Those algorithms are written in a particular notation (a programming language) as programs. Students will learn how to carry out these tasks and how to think about computation in terms of general patterns, such as hierarchical composition or the use of interchangeable components with consistent interfaces.
I will be available in my office (OHS 303) from 9:00-9:50 on Tuesdays and Thursdays (other than March 11th) and from 11:30-12:20 on Mondays and Fridays (other than March 12th), as well as by appointment. Or try your luck: just stop by and see whether my door is open. You may send me electronic mail at max@gustavus.edu or call me at extension 7466. I'll try to put any updates to my office hours on my web page, so check there if in doubt.
All course materials will be available through my World Wide Web page. The URL for this course is http://homepages.gac.edu/~mc27/S2010/. After this syllabus I will give hardcopy handouts only to those students who want them.
Our textbook is Python Programming in Context by Bradley N. Miller and David L. Ranum. I recommend that you order a copy in advance, either through The Book Mark or through another seller of your choice; The Book Mark cannot be counted on to have a copy on the shelf if you don't pre-order. The textbook authors maintain a blog for corrections to the book at http://pycontext.blogspot.com/.
In the course of the semester, you will complete 10 projects. In each case, I will indicate what I expect of you. A project report that meets those expectations is due at the start of class on the date specified. (These are also listed in this syllabus.) If you turn in the report late, your grade will drop one point per day late or fraction thereof. If you are too sick to complete a report on time, you will not be penalized. Simply write "late due to illness" at the top of the report, sign your name and hand it in. Other circumstances will be evaluated on a case-by-case basis.
On Tuesdays and Thursdays, we will meet in the OHS 326 computer lab. One or more of those lab days will be provided for you to work on each project. However, you will often need to spend additional time on the project outside of class.
Some of the lab days are not for project work. Instead, the syllabus lists a topic from the textbook with the prefix "In lab:". On these days, I will be covering material from the book, somewhat like on a class day, but in an environment where I can ask each of you to try things out on your individual computers. (By contrast, in the classroom, only one student at a time can use the keyboard of our shared computer.) For each of these days where a textbook topic is covered in lab, the same topic is listed on the following class day. We will have this extra class time to go over the topic some more if you need it. Any remaining time will be available for us to talk about topics that are not in the textbook.
There will be two in-class tests during the semester and a final exam as scheduled by the registrar. These are all show in the syllabus below. If you have a conflict with a testing time, please contact me as soon as possible to make an alternative arrangement.
Tests will be closed-book and mostly closed-notes. You may, however, use a single 8 1/2 by 11 sheet of paper with hand-written notes for reference. (Both sides of the sheet are OK.)
You will earn up to 400 grade points for your work on projects and tests, divided as follows. Each of the 10 projects will be graded on a scale of 20 points, totaling 200 points. Each of the two tests that happens during the semester, in class, will be graded on a scale of 50 points, for 100 more points. The remaining 100 points will come from the comprehensive final exam. Your course grade will be recorded as follows:
| Points | Grade |
|---|---|
| 371-400 | A |
| 358-370 | A- |
| 345-357 | B+ |
| 331-344 | B |
| 318-330 | B- |
| 305-317 | C+ |
| 291-304 | C |
| 278-290 | C- |
| 265-277 | D+ |
| 238-264 | D |
| 000-237 | F |
Please point out any arithmetic or clerical error I make in grading, and I will gladly fix it. You may also request reconsideration if I have been especially unjust.
Any substantive contribution to your project report by another person or taken from a web site or publication should be properly acknowledged in writing. Failure to do so is plagiarism and will necessitate disciplinary action.
The same standards regarding plagiarism apply to team projects as to the work of individuals, except that the author is now the entire team rather than an individual. Anything taken from a source outside the team should be be properly cited.
One additional issue that arises from the team authorship of project reports is that all team members must stand behind all reports bearing their names. All team members have quality assurance responsibility for the entire project. If there is irreconcilable disagreement within the team it is necessary to indicate as much in the report.
You are expected to be familiar with the college academic honesty honor code policy and to comply with that policy. If you have any questions about it, please ask.
If you have a learning, psychological, or physical disability for which a reasonable accommodation can be made, I would be happy to refer you to the college's disability services coordinator, and to cooperate in the accommodation process. It is generally best if this can be done as soon as possible.
This schedule of topics is my best guess and is subject to change. Be sure to let me know if there are other topics you want to spend time on or if our pace needs to change.
| Date | Reading | Topic | Due |
|---|---|---|---|
| 2/8 | 1.1-1.4 | Introduction | |
| 2/9 | 1.5.0-1.5.2 | In lab: Arithmetic and naming | |
| 2/10 | Arithmetic and naming | ||
| 2/11 | 1.5.3-1.5.4 | In lab: Programs that draw | |
| 2/12 | Programs that draw | ||
|
|
|||
| 2/15 | 2.1-2.4 | Approximating π | |
| 2/16 | Project 1: Candy temperatures | ||
| 2/17 | 2.5 | Accumulating an answer | |
| 2/18 | Project 2: Twelve days of Christmas | ||
| 2/19 | An ancient Chinese approximation of π | Project 1 | |
|
|
|||
| 2/22 | 2.6 | Calculating an answer by taking chances | |
| 2/23 | 3.1-3.2 | In lab: Processing textual strings | Project 2 |
| 2/24 | Processing textual strings | ||
| 2/25 | Project 3: Pig Latin | ||
| 2/26 | 3.3-3.5 | Encoding and decoding | |
|
|
|||
| 3/1 | 3.6-3.7 | More text processing | |
| 3/2 | Project 3 continued | ||
| 3/3 | Catch up and review | Project 3 | |
| 3/4 | Office hour instead of lab | ||
| 3/5 | Test 1 | ||
|
|
|||
| 3/8 | 4.1-4.3 | Lists of data | |
| 3/9 | Project 4: Pig Latin revisited | ||
| 3/10 | 4.4-4.5.2 | Statistical examples of list processing | |
| 3/11 | Project 4 continued | ||
| 3/12 | No class: attending computer science education conference | ||
|
|
|||
| 3/15 | 4.5.3 | Storing data more flexibly | |
| 3/16 | Project 5: Storing scores | Project 4 | |
| 3/17 | 4.6-4.7 | More statistical examples | |
| 3/18 | Project 5 continued | ||
| 3/19 | 5.1-5.2.4 | File processing | Project 5 |
|
|
|||
| 3/22 | 5.2.5-5.3.1 | Using data from the internet | |
| 3/23 | 5.3.2 | Project 6: Analyzing election data | |
| 3/24 | More on using data | ||
| 3/25 | Project 6 continued | ||
| 3/26 | 6.1-6.3.1 | Image processing | |
|
|
|||
| 3/27-4/5: Spring Break | |||
|
|
|||
| 4/6 | 6.3.2-6.3.3 | In lab: Generalized image processing | |
| 4/7 | Generalized image processing | Project 6 | |
| 4/8 | Project 7: Image processing | ||
| 4/9 | 6.4 | Looking closer at naming | |
|
|
|||
| 4/12 | 6.5.0-6.5.3 | Moving image pixels around | |
| 4/13 | Project 7 continued | ||
| 4/14 | 6.5.4 | Less localized image processing | |
| 4/15 | Project 7 continued | ||
| 4/16 | Catch up and review | Project 7 (except extra credit) | |
|
|
|||
| 4/19 | Test 2 | Project 7 extra credit | |
| 4/20 | In lab: trouble spots from the test | ||
| 4/21 | 9.1-9.3.3 | Recursion: programs and drawings that nest | |
| 4/22 | In lab: Test 2b and fractals | ||
| 4/23 | 9.3.4-9.3.5 | Drawing Sierpinski's gasket | |
|
|
|||
| 4/26 | 9.4.0-9.4.2 | Drawing snowflakes with L-systems | |
| 4/27 | Project 8: L-systems | ||
| 4/28 | 9.4.3 | More L-systems (11:30-12:00 due to MAYDAY! Peace Conference) | |
| 4/29 | Project 8 continued | ||
| 4/30 | 10.1-10.3.3 | Object-oriented programming | |
|
|
|||
| 5/3 | 10.3.4-10.3.6 | More on object-oriented programming | |
| 5/4 | 10.4-10.6.1 | In lab: Solar system example | Project 8 |
| 5/5 | Solar system example | ||
| 5/6 | 10.6.2-10.6.3 | Project 9: Solar system animation | |
| 5/7 | Animating planetary orbits | ||
|
|
|||
| 5/10 | 11.1-11.5 | Designing a simulated ecology | |
| 5/11 | Project 9 continued | ||
| 5/12 | 11.6.0-11.6.1 | Coordinating the ecology's constituents | |
| 5/13 | 11.6.2-11.6.4 | Project 10: A simulated ecology | Project 9 |
| 5/14 | 11.7-11.8 | Extending the simulation | |
|
|
|||
| 5/17 | Project 10 continued (in OHS 326) | ||
| 5/18 | Project 10 continued | ||
| 5/19 | Catch up and review | Project 10 | |
|
|
|||
| 5/22 | Final exam, 1:00pm-3:00pm | ||