Course syllabus

(PLEASE NOTE that the course is entirely new with a lot of development work. Therefore, details should be considered as preliminary and can be expected to be updated as the course proceeds. Currently missing information will be updated at the latest when the course begins.)

Important information:

  • Office Hours: Wednesday, October 28, 13:00 - 15:00, "python-course" channel,  DIT374 Slack.
  • The deadline for resubmissions (assignments 1-7) is until the end of this course (1st of November). For assignment 8, the deadline for resubmissions is 8 of November.

Introduction

This course is a combination of a continuation course in programming, object oriented
programming, data structures, foremost from the perspective of data science, including
a short orientation about algorithms and algorithm design principles. The language in
this course is Python which is the most common language in the area of data science.

Course content:

  • Basics of Python (data types, expressions, control structures)
  • Types of algorithms, searching and sorting
  • Object oriented programming
  • Common data structures
  • Standard libraries relevant to data science
  • Orientation about algorithms and algorithm design principles

https://kursplaner.gu.se/pdf/kurs/en/DIT374 (here some details like learning objectives can be found) 

Contact details

  • Marwa Naili (lecturer, course responsible):  naili at chalmers.se (please contact Marwa for questions about the course)
  • Dag Wedelin (examiner): dag at chalmers.se
  •  Shirin Tavara (lecturer): tavara at chalmers.se
  • David Bosch (TA): davidbos at chalmers.se

Course representatives:

  • Tobias Schwarz: gusschwto at student.gu.se
  • Atefeh Aminmoghaddam: a.aminmoghadam at gmail.com

Schedule

Due to Covid-19 this will be an online course.

General schedule :  lectures at 10-12 on Monday and Wednesday and supervision at 13-15 on Wednesday and Friday. There may be exceptions some weeks. See the TimeEdit schedule. (Links

Course literature

[1] C. Horstmann: Python for everyone 3rd ed., ISBN: 978-1-119-63829-2, 
[2] Python tutorial: https://docs.python.org/3/tutorial/
[3] Python 3 course: http://www.python-course.eu/python3_course.php 

[4] w3schools, Python: https://www.w3schools.com/python/default.asp
[5] NumPy & SciPy references: http://docs.scipy.org/doc/

[6] W. Mckinney: Python for Data Analysis, 2nd Edition. ISBN: 9781491957660

[7] Jon Kleinberg, Eva Tardos: Algorithm Design. Pearson/Addison-Wesley 2006, ISBN 0-321-29535-8.

[8] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: Introduction to Algorithms, 3rd Edition. MIT Press and McGraw-Hill, 2009. 

[9] Sanjoy Dasgupta, Christos Papadimitriou, and Umesh Vazirani. Algorithms (1st Edition). McGraw-Hill Higher Education, 2008.

[10] Demo for Array, LinkedLists, QueueWithArrays, QueueWithLinkedLists

[11] Robert Sedgewick and Kevin Wayne (2011). Algorithms, 4th edition. The book is available from Cremona, and there is no e-book version. The book has a good webpage with additional information, code, exercises, etc: https://algs4.cs.princeton.edu/

[12] Demo for BFS and DFS, http://www.cc.gatech.edu/~bader/COURSES/GATECH/CS6505-Spring2006, https://www.cs.princeton.edu/courses/archive/spr10/cos226 

[13] Demo for hash table

Changes made since the last occasion

A summary of changes made since the last occasion.

Examination and grading

The grading scale comprises: Pass with Distinction (VG), Pass (G) and Fail (U).
A passing grade for the entire course requires at least a passing grade for all
assignments, both the assignments that are graded as pass/fail and those that that
graded as VG/G/U. To be awarded a higher passing grade for a full course, the student
must, in addition, have a higher average on the weighted grades
from the subset of
assignments that were graded with the full grade scale.

Note: You need to pass all assignments in order to pass this course. For assignments, 15 pts is the passing limit and above 20 is a VG. So, if you have less than 15 points, which means you didn't pass the assignment, you need to resubmit the assignment. The deadline for resubmissions is until the end of this course.

The final grade is based on an overall assessment at the end of the course. If you are close to a grade boundary, you can discuss with the main teacher(s), and you will be given an opportunity to improve at the end of the course.

 

Tentative Schedule

Date Module Lecture/Labs Readings 

Monday, 31/08

Module 1: Basics of Python (1)

Lecture 1: Introduction (slides-01)

Zoom meeting ID for lecture:

https://chalmers.zoom.us/j/64037658889 

Password: 085262 (scheduled from 9:45-12:00; lecture from 10:00-11:45).

 

Wednesday, 02/09

Lecture 2: Data types and data structure in Python (slides-02)

Zoom meeting ID for lecture:

https://chalmers.zoom.us/j/69212328619

Password: 010106

Python for everyone: 

  • Programming With Numbers and Strings
  • Lists
  • Tuples
  • Sets and Dictionaries

Literatures [2,3,4]

Wednesday, 02/09

Friday, 04/09

 

Lab1: Supervised work on Assignment 1.

 

Monday, 07/09

Module 2: Basics of Python (2)

Lecture 3: Branching and iteration (slides-03)

Zoom meeting ID for lecture: https://chalmers.zoom.us/j/68609316800

Password: 893483

Python for everyone: 

  • Decisions
  • Loops

Literatures [2,3,4]

Wednesday, 09/09

 

Lecture 4: Functions, decomposition & abstraction (slides-04)

Zoom meeting ID for lecture: https://chalmers.zoom.us/j/61177309991

Password: 188166

Python for everyone: 

  • Functions

Literatures [2,3,4]

  • Generators
  • Defined functions
  • List comprehension

Wednesday, 09/09

Friday, 11/09

 

Lab2: Supervised work on Assignment 2

 

Monday,

14/09

Module 3: OOP

Lecture 5: Object oriented programming (slides-05)

Zoom meeting ID for lecture: https://chalmers.zoom.us/j/62562741440

Password: 414155

Python for everyone: 

  • Objects and Classes

Wednesday,

16/09

 

Lecture 6: Classes and Inheritance (slides-06)

Zoom meeting ID for lecture:

https://chalmers.zoom.us/j/62514364435

Password: 268607

Python for everyone:

  • Inheritance

Wednesday, 14/09

Friday, 16/09

 

Lab3: Supervised work on Assignment 3

 

Monday,

21/09

Module 4: Algorithms and complexity

Lecture 7: Program efficiency (slides-07)

Zoom meeting ID for lecture:

https://chalmers.zoom.us/j/66876995801

Password: 213164 

(Discussion-assignment02

Algorithm Design:

  • Basics of Algorithm Analysis

 

Wednesday,

23/09

 

Lecture 8: Algorithms, searching and sorting (slides-08)

Zoom meeting ID for lecture:

https://chalmers.zoom.us/j/61259741633

Password: 492084

 

Algorithm Design:

  • Greedy algorithms
  • Divide and Conquer
  • Dynamic programming

Python for everyone:

  • Sorting and searching

Wednesday, 23/09

Friday, 25/09

 

Lab4: Supervised work on Assignment 4

 

Monday,

28/09

Module 5: Data structure in CS (1)

Lecture 9: Linear Data Structures (slides-09)

Zoom meeting ID for lecture:

https://chalmers.zoom.us/j/65959721727

Password: 713091

Chapter 10 in literature [8] linked lists, arrays, stack, and queue

Wednesday,

30/09

 

Lecture 10: Non-Linear Data Structures

(slides-10)

Zoom meeting ID for lecture:

 https://chalmers.zoom.us/j/67635705080

Password: 302151

Related chapters in literature [8,9], Demo[10] 

Wednesday, 30/09

Friday, 2/10

 

Lab5: Supervised work on Assignment 5

 

Monday, 

5/10

Module 6: Data structure in CS (2)

Lecture 11: Graph traversal

(slides-11)

Zoom meeting ID for lecture:

 https://chalmers.zoom.us/j/65926599857

Password: 436169

Related Chapters in literature [8,9,11], Demo [12]

Wednesday,

7/10

 

Lecture 12: Hash function and hash table

(slides-12)

Zoom meeting ID for lecture:

https://chalmers.zoom.us/j/61368873537

Password: 700245

  • Related Chapters in literature [8,9,11], demo [13]

Wednesday, 7/10

Friday, 9/10

 

Lab6: Supervised work on Assignment 6

 

Monday, 12/10

Module 7:

DS (2)

Lecture 13: Data science libraries (1) (slides-13)

Zoom meeting ID for lecture:

https://chalmers.zoom.us/j/66958734083 

Password: 470143

Python for Data Analysis:

  • NumPy

Wednesday,

14/10

 

Lecture 14: Data science libraries (2) (slides-14)

Zoom meeting ID for lecture:

https://chalmers.zoom.us/j/63122240817

Password: 601162

Python for Data Analysis:

  • Pandas

Wednesday, 14/10

Friday, 16/10

 

Lab7: Supervised work on Assignment 7

 

Monday, 19/10

Module 8:

DS (2)

Lecture 15:

Part 1:Follow-up lecture on assignment 7 (slides-15-P1)

Part 2: Dataset Investigation with Python (slides-15-P2)

Zoom meeting ID for lecture:

https://chalmers.zoom.us/j/61978144549

Password: 097886

 

Wednesday,

21/10

Module 4 (part 2): Algorithms and complexity

Lecture 16 with Birgit Grohe: Orientation about algorithms and algorithm design principles (slides-16) (MentimeterQuestionAlgorithms)

Zoom meeting ID for lecture:

https://chalmers.zoom.us/j/61172762574

Password: 365558

Preparation for lecture 16 

Wednesday, 21/10

Friday, 23/10

 

Lab8: Supervised work on Assignment 8