Syllabus

General course overview.

Topics
For the inexperienced...
For the experienced...

You should also read the Learning resources overview.

Topics

Our goal is to understand the scope, techniques, and contributions of the field of computer science.

Table 1: Tentative schedule of topic coverage

Session Material
1 Prologue
2 :
3 Programming
4 :
5 :
6 :
7 :
8 Recursion
9 :
10 Internet
11 :
12 Algorithms
13 :
14 :
15 Cryptography
16 TBA / Quiz
17 Evaluation / Epilogue

This is a survey course; we will move fairly rapidly through a series of topics. (Table 1 gives an anticipated schedule.) The course is structured around four major areas, of which you should have a fair understanding by the end of PGSS.

The course should be challenging, enlightening, and fun for everybody; please demand it!

For the inexperienced...

The CS core is particularly frustrating because a wide experience gap separates the students. Many students have never attempted to understand computing before; a few have several computer science courses behind them. No matter what, the beginners will be frustrated, and the experienced students will be bored. Expect frustration.

But don't be daunted: You are in the majority! The material is all targeted at you.

We will move very quickly. I encourage beginners especially to ask questions when they don't feel they completely understand the topic. It's tempting to think that maybe if you sit back you will begin to understand later... but this doesn't work. Ask!

The assignments will have multiple levels and will indicate what the beginner should do. As an overachieving student, you may find it hard not to go to the highest level; nonetheless, I recommend that beginners avoid this.

Experience shows that some students grasp programming quickly while others do not. This is naturally frustrating for those among the latter. If programming doesn't seem to be clicking for you, I advise you to stick with it nonetheless - you will be a better person for the struggle, and the effort will pay off when you try again in a few years.

For the experienced...

Everybody should find the CS core interesting and challenging! Unfortunately it is not possible within PGSS to have multiple sections of the CS core. But I still believe students who have already studied computer science intensively can still learn a lot - at least if they allow themselves.

This class employs three strategies for teaching experienced students without neglecting those who have not seen much computer science before.

  1. The assignments have multiple levels to which they may be completed. While the lower levels are acceptable - nay, encouraged - for beginners, experienced programmers should find the more advanced levels more interesting.
  2. We will get programming behind us as quickly as possible, so that we can discuss material experienced students are less likely to have seen.
  3. During these programming lectures (Sessions 2-8 in Table 1), students who already know how to program have the option of pursuing self-paced study. You can read more about this at the end of this syllabus.