Syllabus

Your single source of course information

General Information

 
Instructor: Dr. Hannah Béchara
Office: 3.14
Office Hours Tuesdays 16:00-17:00
Class Times Group A: Tues, 14-16h
Group B: Thu, 12-14h

Instructor Information

Hannah Béchara is an NLP post-doc who inadvertently found herself hired by Hertie’s Data Science lab. In between training neural networks and support vector machines, Hannah occasionally teaches programming classes in Python, the programming language for winners. For reasons yet unclear, the University of Wolverhampton decided to award Hannah a PhD in Computer Science.

Course Contents and Learning Objectives

Course Contents

This Python for Data Scientists course leads the students from the basics of writing and running Python scripts to more advanced features such object-oriented programming and data structures.

Main Learning Objectives

Target Group

This course is designed for beginners with no previous programming experience who are interested in learning Python for Data Science. It is especially recommended for students who plan to take next semester’s Machine Learning or Deep Learning course.

Teaching Style

Classes will be highly interactive, focusing on hands-on experience and allowing students to test out everything they have learned in class. Each 2-hour session will include a lecture that introduces some core concepts, a classroom activity that allows students to try out what they learned and solve a problem, and a discussion of the solutions to the problem.

Grading and Assignments

The students will be assessed based on 3 assignments and 1 end-of-term project that test their problem-solving skills as well as their grasp of the core Python concepts discussed in that week’s lecture. Group work is accepted.

Composition of Final Grade

 
Assignment 1: Project Proposal and Literature Review Deadline: Week 4 20%
Assignment 2: Midterm Report Deadline: Week 6 20%
Assignment 3:Final Report Deadline: Week 12 40%
Final Presentations Deadline: Week 12 10%
Participation grade 10%

The assessment for the course consists of a project, presentation and participation. The research project must be done in teams of 2-4 (individual submissions will not be accepted for the project). The aim of the assessments is three-fold. First, it will provide you with the opportunity to apply the concepts learned in this class creatively, which helps you with understanding material more deeply. Second, designing and working on a unique project in a team which is something that you will encounter, if you haven’t already, in the workplace, and the project helps you prepare for that. Third, along with the opportunity to practice and the satisfaction of working creatively, students can use this project to enhance their portfolio or resume.

Note about grading. You will be graded on the quality of your code as well as the efficiency and tidiness. Additionally, you are expected to document your code and to clearly mark any code that is not your own. Smelly code will be penalised.

You must include a link to a GitHub repository containing the code of your project. Your repository must be viewable to the instructor by the submission deadline. If your repository is private, make it accessible to us (GitHub ID hbechara). If your repository is not visible to us, your assignment will not be considered complete, so if you are worried please submit well in advance of the deadline so we can confirm the repository is visible. Furthermore, we will assess individual contribution to the team, should such an issue arise, based on the frequency and quality of GitHub commits in your project repository, so make sure you start the repository as the very first stage of your project.

Assignment Details

Assignment 1

Assignment 2

By the middle of the course, students should present their initial progress report. This should include an early working demo of your project with some complete features. This serves as a project milestone. The milestone should help you make progress on your project and receive feedback.

Assignment 3

You must include a link to a GitHub repository containing full working code of your project, including JUnit tests and full documentation.

Class Presentation

At the end of the semester, teams will produce poster/video presentation of their work to the class and broader Hertie community. Detailed description of the presentation task and marking rubric will be made available on Moodle. Selected projects will be displayed on the lab’s website.

Participation grade

We appreciate everyone being actively involved in the class. For full participation credit, we expect you to contribute relevant questions and ideas to the online class forum on Piazza, and answer questions from your peers. The top ~5 contributors of endorsed answers to Piazza will get 10%; others will get credit in proportion to the participation of the ~5th person. Use your real name and your Hertie email address for participation credit.

Late submission of assignments

For each day the assignment is turned in late, the grade will be reduced by 10% (e.g. submission two days after the deadline would result in 20% grade deduction).

Attendance

Students are expected to be present and prepared for every class session. Active participation during lectures and seminar discussions is important. If unavoidable circumstances arise which prevent attendance or preparation, the instructor should be advised by email with as much advance notice as possible. Please note that students cannot miss more than two out of 12 course sessions. For further information please consult the Examination Rules §10.

Academic Integrity

The Hertie School is committed to the standards of good academic and ethical conduct. Any violation of these standards shall be subject to disciplinary action. Plagiarism, deceitful actions as well as free-riding in group work are not tolerated. See Examination Rules §16.

Compensation for Disadvantages

If a student furnishes evidence that he or she is not able to take an examination as required in whole or in part due to disability or permanent illness, the Examination Committee may upon written request approve learning accommodation(s). In this respect, the submission of adequate certificates may be required. See Examination Rules §14.

Extenuating Circumstances

An extension can be granted due to extenuating circumstances (i.e., for reasons like illness, personal loss or hardship, or caring duties). In such cases, please contact the course instructors and the Examination Office in advance of the deadline.

General Readings

Required:

Michael Dawson. Python for the Absolute Beginner

Recommended:

Steven Bird, Ewan Klein And Edward Loper. “Natural Language Processing with Python”

Aditya Y. Bhargava, Grokking Algorithms: An illustrated guide for programmers and other curious people

Roy Osherove, The Art of Unit Testing

Optional:

Session Overview

Date Title
1 Group A: 08.09.2020
Group B: 10.09.2020
Getting Started with Python: Working with Data
2 Group A: 15.09.2020
Group B: 17.09.2020
Flow Control
3 Group A: 22.09.2020
Group B: 24.09.2020
Data Structures
4 Group A: 29.09.2020
Group B: 01.10.2020
Functions
5 Group A: 06.10.2020
Group B: 08.10.2020
Project Pitches
6 Group A: 13.10.2020
Group B: 15.10.2020
Packages, Modules and Files
7 Group A: 27.10.2020
Group B: 29.10.2020
Object Oriented Programming I
8 Group A: 03.11.2020
Group B: 05.11.2020
Object Oriented Programming II
9 Group A: 10.11.2020
Group B: 12.11.2020
OOP Case Study
10 Group A: 17.11.2020
Group B: 19.11.2020
Unit Tests and Documentation
11 Group A: 24.11.2020
Group B: 26.11.2020
Algorithm Analysis and Big-O Notation
12 Group A: 01.12.2020
Group B: 03.12.2020
Project Presentations