Matthew L. Wright
Associate Professor, St. Olaf College

Principles of Computer Science

CS 121 ⋅ Spring 2017

This is a past course that has already concluded. If you are looking for a current course, please click here.

Welcome to Principles of Computer Science! For course info and policies, please see the syllabus. For grades, log into Moodle.

Prof. Wright's office hours: Mon. 12:45–1:45, Wed. 9–10, Thurs. 10–11 & 1–2, Fri. 12:45–1:45, or by appointment in RMS 409

Supplemental Instruction (SI): Sun. 4:00–5:00pm, Tues. 3:00–4:00pm, Thurs. 7:00–8:00pm in RNS 203

Homework help sessions: Sun. 7:00–8:00pm, Tues. 7:00–8:00pm, Thurs. 9:00–10:00pm in RNS 203

Jump to today
Monday
Feb. 6
Introduction: What is computer science?
Binary and decimal numbers
Do the following before next class:
Wednesday
Feb. 8
Simple Python programs
Values and types, statements, operators, and assignment
Do the following before next class:
Friday
Feb. 10
Turtle graphics and methods
Simple iteration
Quiz today on General Introduction and Simple Python Data chapters.
Do the following before next class:
Monday
Feb. 13
Modules in Python — math, random, etc.
Do the following before next class:
Wednesday
Feb. 15
Functions, arguments, return values,
variable scope, and the accumulator pattern
Do the following before next class:
Friday
Feb. 17
Internet concepts and network architecture
Quiz today on Turtle Graphics, Python Modules chapters.
exam
Do the following before next class:
  • Complete the Internet Scavenger Hunt and bring it to class on Monday.
  • Read the Selection chapter of the Interactive Python text. Make sure you know the comparison operators, logical operators, and syntax of the if statement.
Monday
Feb. 20
Boolean values, logical operators, and conditional statements
Do the following before next class:
  • Complete Homework 5.
  • Re-read the Selection chapter of the Interactive Python text; pay special attendtion to chained conditionals and Boolean functions. You may submit a question anything you don't understand.
Wednesday
Feb. 22
advanced conditional statements
Do the following before next class:
Friday
Feb. 24
link layer and internetworking layer
exam
Do the following before next class:
Monday
Feb. 27
iteration — for and while loops
Do the following before next class:
Wednesday
Mar. 1
iteration application: image processing
Do the following before next class:
  • Complete Homework 8.
  • Read Chapters 5 and 6 from How the Internet Works. Pay special attention to the words in the Glossary sections, and test your understanding by answering the multiple-choice questions at the end of each chapter. Then submit a question about what you read.
Friday
Mar. 3
DNS and transport layer
exam
Do the following before next class:
Monday
Mar. 6
string operations and methods
Do the following before next class:
Wednesday
Mar. 8
turtles, strings, and L-systems
Do the following before next class:
Friday
Mar. 10
application layer
files: request_test, simple.html
exam
Do the following before next class:
Monday
Mar. 13
list operations and methods
Do the following before next class:
Wednesday
Mar. 15
more about lists and tuples
Study for the exam! See the exam info below and the list of exam topics.
Friday
Mar. 17
Midterm Exam
  • This exam will cover material from the online Python text through the lists chapter, as well as the first seven chapters of How the Internet Works. For more info, see the list of exam topics.
  • The exam will contain conceptual questions and questions that ask you to write code, similar to the quizzes.
  • You will have 55 minutes for the exam.
  • This will be a paper exam. Books, notes, and internet-capable devices will not be permitted during the exam.
  • For practice, work on the problems from class before looking at the solutions (currently through March 15).
exam
Have a great spring break! No class March 20 – 24.
Do the following before next class:
Monday
Mar. 27
files — reading and writing
Do the following before next class:
Wednesday
Mar. 29
dictionaries and key-value pairs
Do the following before next class:
Friday
Mar. 31
secure transport: basic encryption and digital signatures
Quiz today on
Files and Dictionaries
exam
Do the following before next class:
Monday
Apr. 3
exceptions
Do the following before next class:
Wednesday
Apr. 5
Friday
Apr. 7
secure transport: public key encryption and certificate authorities
Quiz today on basic encryption, digital signatures, and exceptions
exam
Do the following before next class:
Monday
Apr. 10
more on recursion
Do the following before next class:
Wednesday
Apr. 12
classes, objects, and methods
Easter break! No class April 14 or 17.
Do the following before next class:
Wednesday
Apr. 19
classes, objects, and methods
Do the following before next class:
Friday
Apr. 21
parallel computing
Do the following before next class:
Monday
Apr. 24
graphical user interfaces (GUI)
Do the following before next class:
Wednesday
Apr. 26
graphical user interfaces (GUI)
project proposal due
Do the following before next class:
Friday
Apr. 28
HTML and CSS
Quiz today on WebMapReduce and GUI programming
exam
Do the following before next class:
  • Complete Homework 24, if you haven't done so already.
  • Complete Homework 25.
  • Talk with your team about the first steps for your project. For example: How will you structure your code? What classes and objects will you need? What Python modules will you use? What will your interface look like?
Monday
May. 1
No class — attend the events in Tomson Hall and elsewhere on campus.
Do the following before next class:
  • Complete Homework 24 and Homework 25, if you haven't done so already.
  • Talk with your team about the first steps for your project. For example: How will you structure your code? What classes and objects will you need? What Python modules will you use? What will your interface look like?
Wednesday
May. 3
creating web pages with Python
helloWorldHTML.py
Do the following before next class:
  • Complete Homework 26.
  • Prepare your project design update: a brief report on your progress so far. In particular, indicate what Python classes you will create for your project and what Python modules you will employ.
Friday
May. 5
class starts at 11:00am today due
to the Honors Day convocation
Do the following before next class:
  • Complete Homework 26, if you haven't done so already.
  • Work with your team on your project.
Monday
May. 8
robotics demonstration
Do the following before next class:
  • Work with your team on your project.
  • Prepare your project status update: a brief report on what you have accomplished so far and what remains to be done.
Wednesday
May. 10
Do the following before next class:
  • Work with your team on your project. Don't forget about the user manual to accompany your program! Begin thinking about your 3-minute presentation, if you haven't done so already.
Friday
May. 12
work on projects
Do the following before next class:
Monday
May. 15
Study for the exam!
Thursday
May. 18
Final Exam, 9–11am
  • The exam will cover the material that we have studied in the online Python text as well as How the Internet Works and related topics.
  • See the Exam tab for a list of topics to review.
  • The exam will contain a mix of conceptual questions and questions that ask you to write code.
  • You will have two hours for the exam.
  • This will be a paper exam. Computers, calculators, phones, reference materials, and other similar things are not allowed during the exam.
  • Here are some practice problems from class and solutions.
  • Lastly, make sure you are familiar with the St. Olaf final exam policies.
exam