Course syllabus

Course PM

DAT690 / DIT516 / DAT516 Continuation course in programming in Python

LP2 HT25 (7,5 hp)

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

Quick links

Contact details

Course purpose

The course is aimed for students who have completed an introductory course in programming, such as DAT555 or TDA548 at Chalmers. This course will proceed to more advanced applications of Python that profit from the advanced features of Python 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 for both course instances.

Week Study Week Dates Lecture 1 Lecture 2 Deadline
45 1 3/11 – 7/11 L01: Introduction, overview (J, A) L02: Information storage, lab 1 (J, A)
46 2 10/11 – 14/11 L03: Graphs (A) L04: Data model, OO 1 (A) Lab 1
47 3 17/11 – 21/11 L05: OO 2, lab 2 (A) L06: Testing (M)
48 4 24/11 – 28/11 L07: – L08: Web (J) Lab 2
49 5 1/12 – 5/12 L09: Full-stack 1, lab 3 (J) L10: Full-stack 2 (J)
50 6 8/12 – 12/12 L11: Rest of Python (A) L12: Python in the real world (J) Lab 3
51 7 15/12 – 19/12 L13: Exam prep (J, A) L14: TBA

Peer review,
AI self-disclosure

52 8 22/12 – 26/12
1 9 29/12 – 2/1
2 10 5/1 – 9/1 Final resubmission
3 11 12/1 – 16/1 Exam: Tuesday 13/1 PM

Where A, J, M correspond to lecturers: Aarne, John, Mustafa.

Course literature

The official documentation of Python will be used as the standard reference:

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

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
  • individual supervision
  • assignments ("labs") to be submitted and graded - in groups of at most three
  • exam

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

Syllabus

This Canvas page is shared for these course instances:

  • DAT690 Continuation course in programming in Python
  • DAT516 Continuation course in programming in Python
  • DIT516 (GU) Advanced programming in Python

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 labs can be done in groups of 1 to 3 students.

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

Copying from other groups (pairs or individuals) in the labs or exam is considered cheating and is thus forbidden.

This course has an AI policy which you must follow, including submitting a self-disclosure of if/how you used AI tools during this course.

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: 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: 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: 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.

Göteborgs_spårvägsnät.svg

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