Course syllabus

First lecture on Monday 30 October at 8:00 in HB4 (and not in KA).

Chalmers DAT515, GU DIT515, lp2 HT23 (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 REQUIRED FOR THE ASSIGNMENTS - Submission is dealt with on Github Classroom only
  • 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
  • Slack workspace, for asnynchronous communication with teachers and TAs and between students

Teachers

  • examiner: Aarne Ranta
  • co-teachers: Arianna Masciolini, Piero Romare, Victor Morel
  • supervisors/teachings assistants: Anna Davoodi, Ludvig Nordberg, Marcus Wassenius, Max Hilding, Melker Rååd

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

Course representatives

To be announced. They can be contacted via Slack. 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. If that course is in Python (e.g. DAT455 or TIN214 at Chalmers), there will be some repetition at the beginning. The reason is that the course will also be accessible to students who have a different background, such as a Java course. The first two lectures will be a quick "crash course" giving a summary of Python to those who already know programming, just not the specifics of Python.

After that, the course will proceed to more advanced features of Python and, in particular, to more advanced applications. The ultimate 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. 

Note that the submission of labs is dealt with on Github Classroom only.

Schedule

The official schedule is in TimeEdit which gives both times and locations. But we will also support remote lab supervision, available via Slack.

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 technical documentation on an advanced level.

Course design

The course consists of

  • lectures
  • exercise classes
  • individual supervision
  • discussion forum (on GitHub Classroom)
  • assignments ("labs") to be submitted and graded - individually by each student
  • 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 30/10, 8-10, HB4 Lecture 1: Python recap and tutorial I. Slides
Tue 31/10, 8-10, HB4 Lecture 2: Python recap and tutorial II slides
Wed 1/11, 13-15, GD-salen Lecture 3: Information storing and extraction, JSON slides ready for Lab 1
Mon 6/11, 8-10, HB4 Exercise 02
Tue 7/11, 8-10, HB4 Lecture 4: Graph algorithms, by Victor, slides
Wed 8/11, 13-15, GD-salen Exercise 03
Mon 13/11, 8-10, HB4 Lecture 5: Python Data Model, Object-oriented design I slides
Tue 14/11, 8-9 (no break), HB4 Lecture 6: Object-oriented design II slides ready for Lab 2
Wed 15/11, 13-15, GD-salen Exercise 4
Fri 17/11 Lab 1 deadline Lab 1 deadline
Mon 20/11, 8-10, HB4 Lecture 7: Visualization slides
Tue 21/11, 8-10, HB4 Lecture 8: Web programming  slides
Wed 22/11, 13-15, GD-salen Exercise 5
Mon 27/11 recorded, not on campus

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

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

Tue 28/11, 8-10, HB4 Lecture 10: Full-stack development II; questions and repetition,  slides ready for Lab 3
Wed 29/11, 13-15, GD-salen Exercise 6
Fri 1/12 Lab 2 deadline Lab 2 deadline
Mon 4/12, 8-10, HB4

Lecture 11: The rest of Python slides ; Extra lab topics introduction (material: lab specifications in github)

ready for extra labs
Tue 5/12, 8-10, HB4

Lecture 12: Special topic: Python in Natural Language Processing, by Arianna (slides and code)

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

Exercise 7

Mon 11/12, 8-10, HB4

Lecture 13:

8:00-8:45 Repetition: old exam questions

9:00-9:45 Guest lecture on Python in real world applications, by John Camilleri, CTO, Textual.ai

slides

 

Wed 13/12 Lab 3 deadline Lab 3 deadline
Wed 13/12, 13-15, GD-salen Extra lab session
14-15/12 peer reviews of Lab 3
Wed 20/12 Extra Labs Deadline (colouring and clustering) Extra labs deadline
Thu 11/1 last deadline for lab resubmissions (complete with peer review reports)
Tue 9/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 (pain 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 togethe.

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

These three labs are compulsory for everyone and sufficient for the accepted grade 3. For higher grades, extra labs can be submitted - basically, one lab for grade 4, two for grade 5. Possible topics for these labs will include:

  • A graph colouring algorithm: colouring maps in a given number of colours.
  • Clustering: unsupervised machine learning techniques for finding distinguishable parts of a graph. 
  • Extra parts in the ordinary labs: instead of doing certain things easier or using ready-made solutions, as indicated in each lab.

Some more topics may be added.

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

Judgement and approach:

  • reason about software design choices
  • assess the complexity of programming tasks

Link to the syllabus on Studieportalen:

Chalmers syllabus (kursplan)

GU syllabus (kursplan)

Examination form

The most important part are the labs, will together form a project. This project has compulsory parts, sufficient for grade 3, and optional parts for those aiming at grades 4 and 5.

The exam will test the knowledge acquired by doing the labs. The final grade is the same as the grade for the lab.

Old exams can be found in the course GitHub under old-exams/

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

 

 

Course summary:

Date Details Due