Course syllabus
Course PM
DAT555 Fundamentals of program development
LP1 HT25 (7,5 hp)
The course is offered by the department of Computer Science and Engineering
Contact details
- Examiner: Jean-Philippe Bernardy jean-philippe.bernardy@gu.se
- Lecturer: John J. Camilleri john.j.camilleri@chalmers.se
- Teaching assistants:
- Axel Gustavsson axelgust@chalmers.se
- Bibiana Farinha bibiana.farinha@gmail.com
- Carl Hernqvist Larsson carllarsson1234@gmail.com
- Casper Hansen repsac2002@gmail.com
- Christie Adamsson chradam@chalmers.se
- David Spaberg david@spaberg.se
- Ella Usher usher@chalmers.se
- Gabriel Mörck morckg@student.chalmers.se
- Hedvig Eriksson hedvig.eriksson03@gmail.com
- Isabell Nordmark nordmarkisabell@gmail.com
- Jonathan Dahlqvist jondahl@chalmers.se
- Leo Kamimura Larsson kamimuralarsson.leo@gmail.com
- Muhammad Abdullah Arshad abdullaharshad171@gmail.com
- Sam Björkman sam.f.bjorkman@gmail.com
- Shariq Ali gusalishb@student.gu.se
- Viktor Andersson viktor.andersson0315@gmail.com
- Wincent Stålbert Holm wincenth@chalmers.se
- Adina Aniculaesei adinaan@chalmers.se
- Alex Ionescu ionescua@chalmers.se
- George Warren Granberry georgegr@chalmers.se
- Henrik Jansson Valter valterh@chalmers.se
- Julius Marozas marozas@chalmers.se
- Katya Voloshina ekaterina.voloshina@chalmers.se
- Tejas Pujari tejasba@chalmers.se
- Sandro Stucki sandro.stucki@chalmers.se
- Student Representatives:
- TKIEK Lucas Aebischer Skogbäck skogback@student.chalmers.se
- TKIEK Emmie Fredholm Evasdotter emmiefr@student.chalmers.se
- TKIEK Rebecka Jerklind jerklind@student.chalmers.se
- TKIEK Philip Käll Norum kallp@student.chalmers.se
- TKIEK Oscar Eric Lundgren ericos@student.chalmers.se
Schedule
The course schedule is available on TimeEdit.
The table below shows a summary of all the dates for the lectures and lab deadlines:
| Week | Study Week | Dates | Lecture 1 | Lecture 2 | Deadline |
|---|---|---|---|---|---|
| 36 | 1 | 01/09 – 05/09 | L00: Intro, OS | L01: Variables, loops | Lab 0 |
| 37 | 2 | 08/09 – 12/09 | L02: If, functions | L03: Numbers | |
| 38 | 3 | 15/09 – 19/09 | L04: Strings, lists, tuples | L05: Files, dictionaries | Self practice checkpoint |
| 39 | 4 | 22/09 – 26/09 | L06: Advanced control flow | L07: Matrices | |
| 40 | 5 | 29/09 – 03/10 | L08: Object-oriented programming | L09: Graphics | Lab 1 |
| 41 | 6 | 06/10 – 10/10 | L10: Object-oriented design, types | L11: Complexity, recursion | |
| 42 | 7 | 13/10 – 17/10 | L12: Exam prep | L13: Revision | Lab 3 |
| 43 | 8 | 20/10 – 24/10 | L14: No lecture | L15: Revision |
The lecture topics, slides, etc. will appear as modules as the course progresses.
Course literature
John M. Zelle, "Python Programming: An Introduction to Computer Science".
Franklin, Beedle & Associates.
https://mcsp.wartburg.edu/zelle/python/
In this course we support both the 3rd and 4th edition of the book.
The book is also available as an e-book.
Learning outcomes
Knowledge and understanding
- Grasp the relation between source code, the interpreter, and the machine.
- Choose appropriate data types and data structures for different kinds of data, depending on their performance characteristics.
- Design algorithms to solve simple programming problems.
Competence and skill
- Structure small programs by the use of concepts such as iterations, functions, modules, classes, and methods.
- Structure larger programs into manageable and reusable units.
- Form readable, descriptive and well-documented program code.
- Use programming for basic data analysis involving large textual or numeric files.
- Express mathematical formulas as programming language expressions and algorithms.
- Build basic interactive programs with text-based (and graphical) user interfaces.
- Test programs, for instance using unit testing.
- Use programming tools such as text editor, command line interface, and IDE (integrated development environment).
- Use standard libraries and follow best programming practices.
- Apply basic tools and methods supporting an inclusive cooperation in group work, including JML aspects.
Judgement and approach
- Assess the difficulty and resources needed for typical programming tasks.
Content
The course is a first introduction to programming by using the general-purpose programming language Python. It gives a comprehensive knowledge of the language, enabling the student to write code for a wide variety of tasks and to read and reuse code written by other programmers.
- Literals, types, variables, declarations, initialization, operators, expressions and statements, scope.
- Control statements: if, while, for, break, continue, return try, raise.
- Exceptions and exception handling.
- functions, parameters, arguments, method calls, local variables.
- Classes, objects, instance and class variables/methods.
- Simple data structures (list, dictionary, set, stack).
- One- and two-dimensional lists.
- Input and output.
- Introduction to graphical interfaces.
- Overview of file handling.
- Text handling, strings.
Organisation
The teaching consists of lectures, group work, exercises, as well as supervision in connection to the exercises.
Examination form
To pass the course it is necessary to complete:
- Self practice exercises (individually) which will be reviewed by a supervisor in checkpoint.
- Two obligatory labs (in groups of up to 4) which must be submitted before the deadline and approved by a supervisor. The grading can involve automatic testing, but supervisors also manually inspect the submissions for clarity, correctness and general quality.
- A digital exam where you will have access to a Python interpreter. Permitted aids: one handwritten A4 sheet.
Grading
Self practice and labs are pass/fail. Exam and course grade is graded on the scale U/3/4/5.
Academic honesty
- Copying from someone else’s solution is considered cheating.
- Communicating your solutions to other groups is forbidden.
- Using AI tools (ChatGPT, etc.) is forbidden throughout the entire course.
Official course syllabus
The official course syllabus can be found here.