# Course Information and Policies

## Learning Objectives

At the end of the course, the students will

#### 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

… 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

1. “Problem Solving using Python” is a joint journey
2. Learning is an active, cognitive, and social process
3. Learning should be authentic
4. Motivation, interest, curiosity, and fun matter
5. Building our capacity to solve programming problems takes time and effort
6. Learning is about continual improvement so it requires rapid feedback
7. Teaching should be adaptive and personalized
8. Failure is essential to learning
9. We all have a code of honor
10. 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.

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 10% ~ 2

You will no doubt note that we have not yet decided what to do with 10% of the grade. This is on purpose, we will see how things go and allocate it based on that.

## 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).