DAT516 / DIT515 Continuation course in programming in Python

First lecture on Monday 4 and Tuesday 5 November, both at 8:00 in HB4. The first lecture is given twice to make sure everyone has a possibility to attend it physically. For later lectures, we count on one lecture hall having room for everyone, but will revise this solution if necessary.

Continuation Course in Programming in Python

Chalmers DAT516, GU DIT515, lp2 HT24 (7.5 hp)

The course is offered by the department of Computer Science and Engineering.

Links

  • TimeEdit, schedule with times and locations
  • course GitHub, containing most of the material such as labs, exercises, and lecture notes
  • how to setup Github Classroom, forthcoming
  • lecture notes, updated at GitHub as the course proceeds
  • official Python tutorial, covering the most of the language and the main material for the beginning of the course, but something to go back to even later

Teachers

  • examiner: Aarne Ranta
  • supervisors/teachings assistants:
    • Ekaterina Voloshina
      Arsham G Khoee
      Piero Romare
      George Granberry
      Ludvig Nordberg
      Karl Wiklund
      Abirami Rengaraj
      Vilhelm Nilsson Thorsson
      Shilpa Sudhir
      Sofia Lindh
      Marcel Schweikart
      Jakob Backhaus
      Ida Thorburn
      Oskar Uhlmann
      Samuel Paulsson
      Melker Rååd

The best way to contact the teachers is via our Piazza channel (instructions in Announcements; only for teachers and registered students),

Course representatives

Amar and Tove, who can be contacted via Piazza or email. An announcement from 21 November shows their email addresses. You can send them feedback, which they will communicate to the teachers. Of course, you can also contact the teachers directly.

Course purpose

The course is aimed for students who have completed an introductory course in programming, such as DAT555 or TDA548 at Chalmers. The first two lectures will be a quick "crash course" giving a summary of Python but now in a systematic rather than tutorial way, also covering aspects of Python that are outside the scope of the introduction courses.

After that, the course will proceed to more advanced applications of Python that profit from the advanced features and, even more importantly, address programming task of a higher complexity. The goal is to cover all aspects of "full stack development", in the form of a series of labs that results in a web application with a front end, a back end, and a database. 

Schedule

The official schedule is in TimeEdit, which gives both times and locations. But also consult the lecture table below to see what lecture times are actually in use.

The only compulsory participation in place is the exam in January - all other parts can be made via internet, for the most part via this Canvas page. Lectures will not be recorded, but their material will be available on this Canvas page.

Course literature

The official documentation of Python

https://docs.python.org/3/

will be used as the standard reference. One of the very goals of this course is to give a clear view of everything in the Python language and its standard libraries and enable reading original technical documentation on an advanced level.

Course design

The course consists of

  • lectures
  • reading material
  • exercises (on course GitHub)
  • individual supervision
  • discussion forum (on Piazza)
  • assignments ("labs") to be submitted and graded - in groups of at most three
  • exam

Lecture and lab schedule

The following table gives a schedule of the main events of the course (note: preliminary; the precise locations can be found in TimeEdit; exercise sessions still to be marked)

Date, time, location Event Notes

Mon 4/11 and Tue 5/11, 8-10, HB4

Lecture 1: Introduction to the course. Python systematic overview I. Using GitHub and other new tools. The first lecture is given twice to make sure that everyone has a possibility to hear it. slides
Wed 6/11, 13-15, GD-salen

Lecture 2: Python systematic overview II. slides

Tue 12/11, 8-10, HB4 Lecture 3: Information storing and extraction, JSON; Lab 1 introduction. slides ready for Lab 1
Wed 13/11, 13-15, GD-salen Lecture 4: Graph algorithms, guest lecture by Esther Galby slides (old slides)
Tue 19/11, 8-10, HB4 Lecture 5: Python Data Model, Object-oriented design I slides
Wed 20/11, 13-15, GD-salen Lecture 6: Object-oriented design II; Lab 2 introduction. slides ready for Lab 2
Fri 22/11 Lab 1 deadline Lab 1 deadline
Tue 26/11, 8-10, HB4 Lecture 7: Web programming ; random testing slides

Wed 27/11, 13-15

recorded, not on campus

Lecture 8: Full-stack development I: introduction to Lab 3  movie

(Notice: download the movie instead of watching on Canvas to get the full resolution)

(Notice 2: the movie talks about "bonus parts", but there are now only obligatory parts, the same for everyone.

Tue 3/12, 8-10, HB4

Lecture 9: Full-stack development II; Lab 3 introduction.  slides 

ready for Lab 3
Wed 4/12, 13-15, GD-salen Lecture 10: Visualization slides
Fri 6/12 Lab 2 deadline Lab 2 deadline
Tue 10/12, 8-10, HB4

Lecture 11: The rest of Python slides

Mock-up exam start if time remains

Wed 11/12, 13-15, GD-salen

Lecture 12:

Mock-up exam continued

Guest lecture on Python in real world applications: Mats Josefson (AstraZeneca), "Python at work – data analytics workbench"

 

Tue 17/12 Lab 3 deadline Lab 3 deadline
18-20/12 peer reviews of Lab 3
Thu 9/1 last deadline for lab resubmissions (complete with peer review reports)
Tue 14/1, 14-18, Johanneberg Exam

The Labs

The lab consists of building a web application for route finding in a public transport network, exemplified by the tram system of Gothenburg; see picture below. The application allows queries about the network, such as asking for the shortest or the fastest route from one place to another. The final application will be demonstrated with the Gothenburg tram network, but the software behind it will be much more general and applicable not only to transport networks but to graphs of many kinds.

This lab is built in three parts, submitted separately each by its own deadline. The three lectures preceding the work on each lab will give the theoretical background and technical prerequisites of the work.

  • Lab 1 (lectures 1-3): Information Extraction. Collect and combine data from different sources (files, web queries) and formats (plain text, Json). This is an exercise in finding and using relevant functions and libraries of Python. It will provide the database part of the full application.
  • Lab 2 (lectures 4-6): Graph Classes and Algorithms. Implement a library of concepts applicable for graph analysis tasks - transport networks as focus but not the only application. This is at the same time a substantial exercise in object-oriented design (classes, methods, encapsulation, inheritance, modelling). It will provide the back end part of the full application.
  • Lab 3 (lectures 7-9): Web Application. Build a web server and user interface, in which the user can find routes in transport networks. This requires learning about visualization libraries and web application frameworks. It will provide the front end part of the full application and put all the components together.

The Gothenburg Tram Network (picture by Bengt-Inge Larsson - Eget arbete, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=92652381)

Göteborgs_spårvägsnät.svg

Learning objectives and syllabus

Learning objectives:

Knowledge and understanding:
  • recognize all constructs of Python and the design choices behind them
  • explain the design alternatives in modular and scalable programming
Skills and abilities:
  • create well-organized software projects for complex tasks
  • read and analyse code written by others
  • contribute to collaborative projects
  • use standard libraries for advanced tasks
  • apply testing methods to guarantee the quality of code
  • write code documentation on different levels of detail
  • apply fundamental methods to give constructive feedback in peer reviews of program code, including the aspects of gender equality, diversity, and equal conditions
Judgement and approach:
  • reason about software design choices
  • assess the complexity of programming tasks

Link to the official syllabus on Studieportalen:

Chalmers syllabus (kursplan)

Examination form

Labs: The most important part are the three labs, will together form a project. The labs are graded U/G, with the same grade for the whole lab group. The groups have a maximum size of 3 students.

Exam: The exam will test the knowledge acquired by doing the labs. The grade, also the final grade for the whole course (provided that the labs have grade G), is U/3/4/5 set individually. 

Old exams will be found in the course GitHub under old-exams/. Notice that this year's exam is different from the previous years, as it is now done on computer and not on paper.

The labs can be done in groups of 1 to 3 students, whereas the exam is done individually. Copying from other groups (pairs or individuals) in the labs is forbidden.

 

 

Course summary:

Date Details Due