Programming requires multiple steps, from understanding the problem,
designing a solution, coding, testing and debugging it into a running and correct program.
Moreover, this program should be easy to understand and consequently modify.
Balancing all of these concerns is a challenge for novice programmers.
In this course, we will learn to solve programming problems in a methodical and thoughtful manner
using the Python language.
We will do so by applying a specific model for programming problem solving
and tackling real problems.
The course requires a background in programming, at least one introductory course.
Please read this if you wonder whether you should take this course or not.
Instructors
- Shlomi Hod - shlomi.hod <AT> uni-potsdam.de
- Ilia Kurenkov - ilia.kurenkov <AT> uni-potsdam.de
Time and place
Campus 3 - Griebnitzsee (map)
- Lecture - Mondays - 14:15-15:45 - House 1, Room 2.32 (3.01.2.32)
- Lab - Wednesdays - 16:15-17:45 - House 4, Room 1.03 (3.04.1.03)
- Office Hours - Wednesdays - 12:00-14:00, House 4, Room 2.01 (3.04.2.01)
Credit
6 ECTS
Announcements
Fifthteenth Week, February 4
Fourteenth Week, January 28
- The course mini-project was uploaded to week 14.
- The final exam will take place at 18/02 (Monday) 14:00-17:00 in the computer lab - House 4, Room 1.03 (3.04.1.03). The problems in the studio would be good preparation.
Twelfth Week, January 14
- The complete solution of the Sudoku problem is in the week’s lab link.
Tenth Week, December 17
- After the Xmas break, we will solve in the lecture the Viterbi algorithm problem. We can relate to specific issues if you send us until 31/12/18 your solution. Of course, we will not show any of your code - it will be used only to extract general points.
-
Merry Christmas! |
Froh Weihnachten! |
Eighth Week, December 3
- The midterm exam will take place next Wednesday (12/12) 15:00-18:00 in the computer lab - House 4, Room 1.03 (3.04.1.03). The problems in the studio would be good preparation. Recursion won’t be on the exam.
Seventh Week, November 28
- The deadline for homework 5 (one-liners and image editor) is extended to 2/12 23:59 (Sunday).
- Please read the clarification note in Piazza regarding “PPM file lines and Image Rows” in homework 5.
Sixth Week, November 19
- If you plan to take this course for credit, you must enroll in PULS until 20/11.
- Note that the deadline for homework 3 and 4 is 20/11 (this Wednesday).
Fifth Week, November 12
- Two updates on Homework 3
- Milestone I - The function
generate_word_ngram
takes in the first argument - document_path
- a path to a single file. That is explained in the docstring and it is suggested by the argument name. The text above the function states wrongly that it should take a path to a directory of files. We’ll fix the text for the next year.
- Milestone III - The returned list of tuples should be ordered by the overlap score in descending order (largest to the smallest).
- The feedbacks and grades for homework 1 were published in OK website.
- Note that the deadline for homework 3 and 4 is 20/11.
- In case you weren’t in the lab of week 4 (7/11), contact us to know which program you should test in homework 4.
Fourth Week, November 5
- Note that the deadline for homework 3 and 4 is 20/11.
- If you’ve downloaded homework 3 before 8/11 19h, please download it again. There was a mistake in the test of Milestone III.
- In case you weren’t in the lab of week 4 (7/11), contact us to know which program you should test in homework 4.
Third Week, October 29
- From now on, the lecture will take place in Haus 1 (the building with the Mensa), Room 2.32. The time stays the same, 14:15-15:45. The lab is not affected by this.
- Note that the deadline for homework 1 is on this Tuesday at 23:59. Make sure that you submit it correctly with the OK system by running the appropriate cells in Jupyter Notebook.
- This Wednesday (31/10) there won’t be a Lab, because it is a day off in the University due to the Reformation Day. The office hours will take place on Thursday (1/11) 10:00-12:00 at the lobby of the first floor in house 4 (where the lab is located) in Griebnitzsee campus.
Second Week, October 22
- You can find the rest of the “readability measure” part in the slides of lecture 2.
- Next Wednesday (31/10) there won’t be a Lab, because it is a day off in the University due to the Reformation Day. The office hours will take place on Thursday (1/11) 10:00-12:00 at the lobby of the first floor in house 4 (where the lab is located) in Griebnitzsee campus.
- In order to submit your homework to the OK system (homework auto-grading), you should have a Gmail account. You can use your personal address or create a new one for the course. Please send us your Gmail in Piazza or by email.
First Week, October 15
- We will have a mini “Installfests” (Installation + Fest) for Anaconda and Jupyter Notebook before the lecture, 13:00-14:00 on Monday (22/10) at the lobby of the first floor in house 4 (where the lab is located) in Griebnitzsee campus. Bring your computers!
- In order to submit your homework to the OK system (homework auto-grading), you should have a Gmail account. You can use your personal address or create a new one for the course. Please send us your Gmail in Piazza or by email.
- Before the first lab (October 17):
- Please fill the pre-course form
- To gain an access to the lab computers, please fill your university credentials here.
- You can register for the course in PULS.
- Signup to the course in Piazza. You should use your
@uni-potsdam.de
email address.
- Follow the instructions in the setup page on your computer.
First class
- Our first lecture will take place on the first day of the semester, Monday, the 15/10.
- We will start at 14:15 SHARP.
- The lecture will be ended 15 minutes earlier than usual, at 15:30.
- Please fill the pre-course form until Sunday, the 14/10.
- You can register for the course in PULS.
Schedule
Week |
Date (Mo.) |
Topic |
Resources |
1 |
Oct 15 |
Course Overview and Python Review
|
|
2 |
Oct 22 |
Introduction to Programming Problem Solving
|
|
3 |
Oct 29 |
Design and Data Representation
No Lab on Wednesday (31/10) - Reformation Day
|
|
4 |
Nov 05 |
Incremental Development, Test, Evaluation
|
|
5 |
Nov 12 |
Pipeline Design, String Manipulations, Evaluation
|
|
6 |
Nov 19 |
Reading Code, Debug
|
|
7 |
Nov 26 |
Recursion
|
|
8 |
Dec 03 |
Dynamic Programming, Studio
|
|
9 |
Dec 10 |
Midterm Exam
|
|
10 |
Dec 17 |
Review Midterm Exam Solutions
|
|
🎄 |
Dec 24 |
Christmas Break
|
|
☃️ |
Dec 31 |
Christmas Break
|
|
11 |
Jan 07 |
Solving Viterbi, more Recursion
|
|
12 |
Jan 14 |
Sudoku - End-to-end Problem Solving Walkthrough
|
|
13 |
Jan 21 |
Git
|
|
14 |
Jan 28 |
Solving Image Editor, Problem Solving Studio
|
|
15 |
Feb 04 |
Looking Back and What’s Next
|
|