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
Do the following before next class:
- Read General Introduction and Simple Python Data chapters. Run the code and answer the questions that you find in the reading. Pay special attention to the Glossary sections at the end of each chapter. Then submit at least one question about what you read.
- Complete the Binary Assignment (on Moodle).
- Complete the Syllabus Quiz (on Moodle) before class on Friday.
Wednesday
Feb. 8
Feb. 8
Simple Python programs
Values and types, statements, operators, and assignment
Values and types, statements, operators, and assignment
Do the following before next class:
- Complete the Syllabus Quiz, if you haven't done so already.
- Complete Homework 1.
- Read Debugging Interlude and Turtle Graphics chapters. Be sure you understand the sample program in Section 4.3. Then submit at least one question about what you read.
Friday
Feb. 10
Feb. 10
Turtle graphics and methods
Simple iteration
Simple iteration
Quiz today on General Introduction and Simple Python Data chapters.
Do the following before next class:
- Complete Homework 2.
- Read Python Modules chapter. Then submit at least one question about what you read.
Monday
Feb. 13
Feb. 13
Modules in Python — math, random, etc.
Do the following before next class:
- Complete Homework 3.
- Read the Functions chapter. Make sure you know the meaning of the terms argument and return value. Also pay special attention to the accumulator pattern (Section 6.4) — if you don't understand this pattern, submit a specific question about it. You may also submit other questions about the reading.
Wednesday
Feb. 15
Feb. 15
Functions, arguments, return values,
variable scope, and the accumulator pattern
variable scope, and the accumulator pattern
Do the following before next class:
- Complete Homework 4.
- Read Chapters 1 and 2 from How the Internet Works. Then submit at least one question about what you read.
Friday
Feb. 17
Feb. 17
Internet concepts and network architecture
Quiz today on Turtle Graphics, Python Modules chapters.
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
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
Feb. 22
advanced conditional statements
Do the following before next class:
- Complete Homework 6.
- Read Chapters 3 and 4 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 at least one question about what you read.
Friday
Feb. 24
Feb. 24
link layer and internetworking layer
Do the following before next class:
- Complete the Network Address Activity and bring it to class on Monday.
- Read sections 8.1 Iteration Revisited through 8.8 Algorithms Revisited. Come to class knowing the difference between a for loop and a while loop, or submit a question about this.
Monday
Feb. 27
Feb. 27
iteration — for and while loops
Do the following before next class:
- Complete Homework 7.
- Read sections 8.9 Simple Tables through 8.12 Glossary, and submit a question about what you read.
Wednesday
Mar. 1
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.
Do the following before next class:
- Read sections 9.1 Strings Revisited through 9.14 The Accumulator Pattern with Strings. Then submit a question about what you read.
Monday
Mar. 6
Mar. 6
string operations and methods
Do the following before next class:
- Complete Homework 9.
- Read sections 9.15 Turtles and Strings and L-Systems through 9.21 Glossary. Then submit a question about what you read.
Wednesday
Mar. 8
Mar. 8
turtles, strings, and L-systems
Do the following before next class:
- Complete Homework 10.
- Read Chapter 7 from How the Internet Works. Then submit a question about what you read.
Friday
Mar. 10
Mar. 10
Do the following before next class:
- Complete Homework 11.
- Read sections 10.1 Lists through 10.18 Using Lists as Parameters. (You may skip section 10.15.) Then submit a question about what you read.
- Read Appendix: Debugging. Refer to this the next time you are stuck on a program.
Monday
Mar. 13
Mar. 13
list operations and methods
Do the following before next class:
- Complete Homework 12.
- Read the rest of the Lists chapter of the Interactive Python text. You may submit a question about what you read.
Wednesday
Mar. 15
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
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).
Have a great spring break! No class March 20 – 24.
Do the following before next class:
- Read Chapter 11 Files, and submit a question about what you read.
Monday
Mar. 27
Mar. 27
files — reading and writing
Do the following before next class:
- Complete Homework 13.
- Read Chapter 12 Dictionaries, and submit a question about what you read.
Wednesday
Mar. 29
Mar. 29
dictionaries and key-value pairs
Do the following before next class:
- Test your understanding of Python dictionaries by doing Dictionaries Exercise 16 from the online Python text. (You don't have to turn in your answers.)
- Complete Homework 14.
- Read Chapter 8 from How the Internet Works. Also watch this video: Hashing Algorithms and Security. Then submit a question about what you read or saw.
Friday
Mar. 31
Mar. 31
secure transport: basic encryption and digital signatures
Do the following before next class:
- Complete Homework 15.
- Read Chapter 13 Exceptions. Take note of what an exception is in Python, and how you might handle exceptions in your programs. Then submit a question about what you read.
Monday
Apr. 3
Apr. 3
exceptions
Do the following before next class:
- Complete Homework 16.
- Read Chapter 15 Recursion. Then submit a question about what you read. Come to class knowing the three laws of recursion.
Wednesday
Apr. 5
Apr. 5
recursion
Pascal's triangle program from class
Pascal's triangle program from class
Do the following before next class:
Friday
Apr. 7
Apr. 7
secure transport: public key encryption and certificate authorities
Quiz today on basic encryption, digital signatures, and exceptions
Do the following before next class:
- Complete Homework 18.
- Consider your own online security. Read these 10 Internet privacy tips, this page about WiFi security, and this page about online tracking and profiling. Then do an online privacy self-check.
- If you want to know more about how HTTPS works, read this summary.
Monday
Apr. 10
Apr. 10
more on recursion
Do the following before next class:
- Complete Homework 19.
- Read Chapter 16 Classes and Objects - the Basics. Then submit a question about what you read.
- Think about what you might want to do for you final project and who you might want to work with.
Wednesday
Apr. 12
Apr. 12
classes, objects, and methods
Easter break! No class April 14 or 17.
Do the following before next class:
- Complete Homework 20.
- Read Chapter 16 Classes and Objects - Digging a Little Deeper. Then submit a question about what you read.
- Think about what you might want to do for you final project and who you might want to work with.
Wednesday
Apr. 19
Apr. 19
classes, objects, and methods
Do the following before next class:
- Complete Homework 21.
- Read Using Parallelism to Analyze Very Large Files, then submit a question about what you read.
- Go here and create a WebMapReduce account. You will need the Registration Key that was provided in class. We will use WebMapReduce in class on Friday.
Do the following before next class:
- Read Using WebMapReduce and Counting words with WebMapReduce: adding efficiency.
- Complete Homework 22.
- Read Chapter 14 GUI and Event Drive Programming through Section 14.10. Then submit a question about what you read.
Monday
Apr. 24
Apr. 24
graphical user interfaces (GUI)
Do the following before next class:
- Complete Homework 22, if you haven't done so already.
- Complete Homework 23.
- Prepare your project proposal: a brief description of your proposed project and the names of the students in your group.
- Read the rest of Chapter 14 GUI and Event Drive Programming. You may submit a question about what you read.
Wednesday
Apr. 26
Apr. 26
graphical user interfaces (GUI)
project proposal due
project proposal due
Do the following before next class:
- Complete Homework 24.
- Read HTML Basics, HTML Elements, and HTML Attributes, HTML Styles - CSS, and CSS Syntax. You may submit a question about what you read.
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
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
May. 3
creating web pages with Python
helloWorldHTML.py
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
May. 5
work on projects
project design update due
project design update due
class starts at 11:00am today due
to the Honors Day convocation
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
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
May. 10
work on projects
project status update due
project status update due
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
May. 12
work on projects
Do the following before next class:
- Finish your project. Prepare your 3-minute presentation for Monday. Upload your code and user manual to Moodle.
- Complete the self/peer evaluation for the final project.
Monday
May. 15
May. 15
project presentations
project code and user manual due
project code and user manual due
Study for the exam!
Thursday
May. 18
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.