Course Information and Policies
Learning Objectives
At the end of the course, the students will
1. be able to solve programming problems in a methodical and thoughtful manner based on the “Programming Problem Solving Model”.
2. be able to write, read, modify, test and debug programs in written Python, that:
… are in a Jupyter Notebook
… include working with programming foundations, comprehensions, using objects and reading OOP code, and more
… deal with essential problems and algorithms in NLP
3. have a Pythonic Mindset, i.e.:
… can take full advantage of the interactivity of Jupyter Notebooks and the Python Interpreter
… Readability Counts
… Coding Style by PEP8
… using Pythonic Idioms
… using Python’s Standard Library
… using Python Package Index (PyPI)
… following import this
Prerequisites
No formal ones. It is helpful if you did an introductory course in programming (online or university). Familiarity with the basic syntax of Python is a must, as we won’t have much time to review that.
Computer Setup
We will learn to solve programming problem using Python 3. Jupyter Notebook is our primary IDE (Integrated Development Environment).
Refer to the computer setup page for more information.
Our Teaching Philosophy
- “Problem Solving using Python” is a joint journey
- Learning is an active, cognitive, and social process
- Learning should be authentic
- Motivation, interest, curiosity, and fun matter
- Building our capacity to solve programming problems takes time and effort
- Learning is about continual improvement so it requires rapid feedback
- Teaching should be adaptive and personalized
- Failure is essential to learning
- We all have a code of honor
- We are all human
Course Format
Lectures
Once a week, 90 min (2 German academic hours). You must attend 80% of the lectures to pass the course.
Labs
Once a week, 90 min, in one of university’s computer labs. Even though you can use your personal computer during these labs, we strongly recommend you become familiar with the lab computers because you will do your exams on them. Just like with lectures, you must attend 80% of the lab to pass the course. Please note that this is in fact measured separately from lecture attendance.
Office Hours
To make the most of this course you are encouraged to come to our office hours. In a close setting you can give and get individual feedback and work out personal hurdles.
Homework
In this course homework is part of the learning process. It is not a test of how well you learned something. Hence you should be prepared for failures and talk to us or to your classmates about them. You will get partial credit even for problems you were unable to solve if you show us that you tried hard enough. It’s OK to collaborate with classmates, but please submit your own code and explanations. Be advised that we have ways of detecting code plagiarism ;)
Late Policy
If you cannot submit an assignment on time, contact us ASAP. Depending on circumstances, we might grant an extension. We should warn you, however, that such exceptions are rare. Moreover, an assignment cannot be submitted after it was discussed in class or lab.
Exams
There will be two exams. In both of them you will have to solve programming problems on a lab computer.
The midterm exam will take place before Christmas break. There will be only one date for it. If you cannot make that, please get in touch with us ASAP and provided you have a good enough reason for your absence (e.g. sickness or family emergency), we will find ways to accommodate you.
The final exam will be exactly like the midterm except that there will be two dates for it and it will be worth more points.
Grades
We value consistent work throughout the semester. This is why homework makes up almost half of the total grade.
Component | Percentage | Equivalent number |
---|---|---|
of Total | of homework assignments | |
Homework | 45% | = 10 |
Final Exam | 25% | ~ 5 |
Midterm Exam | 15% | ~ 3 |
Mini-Project | 15% | ~ 3 |
The final grade will be calculated on a 100-point scale, and then it will be converted to the German 6-point scale according to this table:
100-point | 6-point |
---|---|
Grading Scale | Grading Scale |
(German) | |
≥ 93 | 1,0 |
88 | 1,3 |
81 | 1,7 |
76 | 2,0 |
71 | 2,3 |
64 | 2,7 |
59 | 3,0 |
54 | 3,3 |
47 | 3,7 |
42 | 4,0 |
< 42 | 5,0 |
Resources and Materials
There is no required textbook for this course. If you want to learn more about the nooks and crannies of Python, we can recommend the following:
Think Python Textbook (2nd Edition)
That and some other materials are available under “Resources” on top of this website.
Announcements
We will announce things about the course (mostly logistics) on the website homepage in the section appropriately named “Announcements”.
Learning Cooperatively
Piazza - Online Forum
If you have any questions and for some reason can’t make the office hours, please post them to Piazza, the course discussion forum. Piazza allows you to learn from questions your fellow students have asked. We encourage you to answer each others’ questions!
At the same time piazza is the best and most reliable way to contact us. You are also welcome to email us directly using the addresses listed on the course homepage.
Code of Honor
With the exception of the exams, we would like for you to discuss the tasks in this course with classmates and friends.
If you find yourself helping someone who is struggling with the material follow this one simple rule:
Don’t give them your code or the answer. Let them discover and write it on their own, with your guidance.
If you find yourself receiving help from one of your peers, follow this one simple rule:
You don’t want to see anyone’s code or answer. Even if you don’t intend to copy it!
If you have collaborated with a fellow student, follow this one simple rule:
Write her/his name in the homework (there will be a place for that).