Course syllabus
Course-PM
EEN065 2025 Applied object-oriented programming lp4 VT25 (7.5 hp)
Course is offered by the department of Electrical Engineering
If you have any questions related to the information on this page, please share them here: Questions about the course syllabus
Updates to this course will be posted regularly. Adjust your canvas notification configurations (access it here: https://chalmers.instructure.com/profile/communication) according to your preferences.
Course language: English (Please also keep all communication within the course in English)
Course channel: You can find old recorded lectures on Chalmers Play. Note that minor changes may happen in the course this year.
Contact details
The course administration reserves the Fridays for activities other than course work. We will answer messages and the discussion forum during business hours on Monday-Thursday.
- Teacher and course responsible
- Carlos Natalino / carlos.natalino@chalmers.se (please prefer messages in canvas) / github.com/carlosnatalino.
- Any issues/requests/comments related to the course must be taken during the lectures (let me know at the beginning of the lecture and we talk at the end). Messages in canvas should be used only if strictly necessary. Email must not be used.
- Teaching assistants
- Ehsan Etezadi / github.com/ehsan5890
- Jayadev Naram / github.com/JayD2106
- Any issues/requests/comments related to the course must be taken during the lab sessions.
- Paolo Monti (Course Examiner) mpaolo@chalmers.se
- Any issues/requests/comments related to the course can be sent preferably through messages in Canvas.
- Student representatives
- To be announced
Course purpose
The aim of the course is to provide students with no previous experience in programming sufficient skills to use Python for the back-end development of digital services.
Schedule
Check the exact location and time of the sessions here: TimeEdit
Backup PDF file: TimeEdit_EEN065_Applied_object-oriented_programming_2025-02-20_15_50.pdf
Course literature
The course mandatory literature is the lecture notes. The relevant chapter(s) must be read before the respective lecture. Students taking the course are not required to buy any book. To access the lecture notes, you must either be connected to the Chalmers network (Eduroam, for instance) or be connected to the Chalmers VPN (instructions for Windows and for Mac).
The lecture notes can be accessed through the link: https://onu1.s2.chalmers.se/notes/
If you try to access the notes from outside of Chalmers, you will get a 403 Forbidden message.
Feedback related to the lecture notes (including anonymous feedback) is welcome here: Questions and comments about the lecture notes
The following material available online can be used for further studies, in addition to the ones referred to in the lecture notes.
- Python online documentation: https://docs.python.org/3.13/
- Python Tutorial: https://docs.python.org/3.13/tutorial/index.html
- Python Standard Library: https://docs.python.org/3.13/library/index.html
- Visual Studio Code documentation for Python: https://code.visualstudio.com/docs/python/python-tutorial
- Redis Python: https://redis-py.readthedocs.io/en/stable/
- Matplotlib: https://matplotlib.org/
- Requests online documentation: https://requests.readthedocs.io/en/master/
- Flask version 3.x online documentation: https://flask.palletsprojects.com/en/
- Exercises: https://www.practicepython.org/
Nevertheless, the following books are recommended (optional) reference reading for those who want to further develop their knowledge. They are all available at the Chalmers library both in paper and digital versions. To find them, search using their ISBN.
- Introducing Python: Modern Computing in Simple Packages, by Bill Lubanovic, 2nd edition, 2020, ISBN: 978-1492051367.
- Covers topics of lectures 1-6
- Relevant chapters: 1-11, 16.1-16.4, 18
-
Python från början, by Jan Skansholm, 2019 or 2024, ISBN: 9789144187617 or 9789144134932
- Test-Driven Development with Python, by Harry Percival, 2nd Edition, 2017, ISBN: 978-1491958704.
- Not available through the library yet
- Covers the topics of test-driven development and code quality studied in the course.
- You can read it for free on the book website: https://www.obeythetestinggoat.com/
Course design
The course is designed having in mind that students attending the course have no prior experience with computer programming. However, it is expected that students have conversational and technical proficiency in English and basic skills with computers, and in particular with the operating system used by the student (MS Windows or macOS). Among the basic skills with computers, we can mention: software download, installation, and configuration; familiarity with graphical user interfaces (menus, tabs, shortcuts, etc.); logical thinking; manipulating files and folders; familiarity with canvas.
The course focuses on developing code quality awareness as the students progress in the course. Code quality encompasses a broad set of practices. For this course, practices such as test-driven development (TDD), code coverage, and code formatting are adopted.
The course is designed for about 200 hours of activities per student. We have the following activities (optional activities are explicitly marked):
- Lectures: 28 h (optional)
- Computer labs: 28 h (optional)
- Project orientation: 8 h (optional)
- Self-study
- Final project
- Programming assignments
- Final written exam
Lectures
Students should prepare for the lectures by reading the associated material (lecture notes). For the first lecture, this syllabus is the prior reading. Lectures are not mandatory and attendance will not be monitored.
The lectures will have the following structure:
- Overview of the chapter
- Answer and discuss students' questions related to the material, if any
- Problem-solving related to the lecture's topic while discussing the topic with the students
Note that the lectures are not a replacement for the reading material and will not cover the entire content. Make sure to read the material before the lecture to be able to answer the quiz, bring any questions you might have, and discuss the content during the problem-solving.
List of lectures:
- Course overview and introduction to computer programming
- Introduction to algorithms and computer programming
- Statements and variables
- Code quality
- Conditional statements and loops
- Data structures
- Built-in and Standard libraries
- External modules
- Object-oriented programming
- Database modeling and implementation
- Data visualization and plotting
- Project definition
- Web services
- Web pages
Lab sessions
Check the TimeEdit schedule for the location of each session.
Labs are not mandatory and attendance will not be monitored.
Lab sessions have four objectives:
- Encourage students to practice the programming concepts discussed during the week through recorded videos
- Test the student's learning through a quiz
- Provide time for students to get together and solve the programming assignments
- Provide time for students to ask questions on a one-to-one basis to the teaching assistants
Students are encouraged to bring their own laptops to the lab sessions. We can only support the latest versions of the operating systems (Windows 11 and macOS 15). Students are also encouraged to bring their own ear/headphones to the sessions so they can listen to the recorded videos. Labs may not always have the necessary software.
General guidelines
- Cooperation between students or project groups, or posting solutions on the Internet, including in the discussion forum, is considered cheating and is subject to disciplinary actions.
- Students must regularly check the Canvas course page. In particular, slides might be updated before and/or after classes.
- Make sure to check the deadline of the assignments.
- Any issues/requests/comments related to the course can be directed to the course teacher (Carlos Natalino) during one of the lectures.
- Any doubts related to programming assignments, final project, or Python should be directed to the teacher or teaching assistants during the lab sessions.
- Use the discussion forum for general questions. Expect a response time of 1-2 business days.
Programming assignments
There will be a total of 7 assignments to be solved. Six of these are programming assignments to be solved and submitted through Canvas. There is also one computer assignments that students should perform and submit.
- Rules:
- The assignment list can be downloaded from Canvas shortly after the corresponding lecture.
- The assignment lists are in the form of a jupyter notebook, i.e., “.ipynb” file extension. The file contains the problems to be solved.
- The problems should be solved in the same file and submitted back to the grading system.
- Answers to the programming assignments must not be posted on public forum, such as committed to GitHub.
- Deadline: Students have one week to submit the solved assignments to Canvas. The specific due date is available for each assignment.
- Students can use up to two late dates, which allows them to submit an assignment up to one week after the due date. Late dates are meant to cover any health or unplanned events. The last date to submit a late assignment is available is shown as "available until" in canvas. A late dates counter will show you how many late dates you have used.
- Programming assignments are graded during the last week of the course.
- Submitting on time and having all the assignments approved will result in getting 15 assignment points (AP) to be used towards the final grade of the course. The points will be accounted for depending on the number of assignments. The list with the number and how many points you get is below:
- 1 AP
- 2.5 APs
- 4 APs
- 6 APs
- 8 APs
- 11 APs
- 15 APs
Final project
The final project is a mandatory part of the course examination. A student needs to be approved on the final project to be approved on the course.
The final project encourages students to exercise all the concepts learned throughout the course towards building an application of his/her interest. The final project also exercises software development teamwork. Details of the project will be published in the week 4 of the course.
The final project will be assessed in the following sequence:
- To be approved, the final project must have been shared with the teacher and TAs, as described in this page: TBA
- To be approved, the final project must have the GitHub actions activated, and pass all the predefined actions (code quality, tests, and code coverage). However, passing the GitHub actions do not grant full grade automatically.
- The final project will be manually graded by the teacher and TAs. Points can be deducted from the final project score if deviations are found in the functionalities, code quality and tests. The deduction per deviation is usually 10% of the total points.
Exceptions to the rules above can be made on a per-project basis depending on the need. The student must document any exception granted and submit it together with the final project in canvas.
Final exam
The final exam tests the theoretical and analytical skills developed during the course. To be approved, the student needs to achieve a score of at least 50% of the exam score. The exam includes questions about the content discussed in class, in the lecture notes, and what/if situations.
Re-examination
The course has two re-examination opportunities, one in June and one in August. The final project and written exam can be taken during these re-examination opportunities. However, there is no time allocated for project orientation during the re-examination periods.
Changes made since the last occasion
A summary of changes made since the last occasion.
Learning objectives and syllabus
Learning objectives:
After completing the course the student should be able to:
- Solve independently basic programming tasks using Python.
- Interpret and extend existing Python code.
- Solve independently advanced programming tasks by using existing Python libraries.
- Develop Python code that manipulates information stored in databases.
- Develop digital services that use Python as their back-end.
Link to the syllabus on Studieportalen: Study plan.
A more detailed list of objectives can be found below.
Knowledge and understanding
• understand how to break down problems and represent the solution steps as an algorithm
• interpret and understand existing Python code
• interpret and understand error messages output by the software
• understand different data types and their use
• understand the relationship among data
• understand the components of a web application
• understand the software development process and requirements for web applications
Skills and abilities
• solve basic programming tasks independently by using Python
• extend existing Python code
• solve syntactic and semantic mistakes or errors in existing Python code
• solve advanced programming tasks independently by using existing Python libraries
• develop Python code that manipulates information stored in databases
• develop digital services that use Python as their back end applying the knowledge on the software development process
Judgment and approach
• propose relevant problem(s) that can be addressed using a web application
• assess and prioritize requirements of the problem(s)
• discuss, plan, and execute the development of a web application
Content:
• The test-driven and quality-focused software development process
• Python language and development environments (IDEs)
• Basic building blocks of programming (e.g., data types, variables, conditional statements, loops, libraries, catching errors)
• Data structures in Python (e.g., trees, dictionaries, queues, tuples)
• Object-oriented programming with Python (e.g., classes, objects, methods, inheritance, polymorphism)
• Database manipulation using Python
• Back-end development for digital systems using Python
Examination form
The examination consists of passing a written exam and completing the final project. Assignments are not mandatory for passing the course, but count towards the final grade. To complete the course, a student needs to complete each one of these parts. The grading scale is: fail, 3, 4, 5.
- The written exam takes place at the end of the course, according to the schedule provided at the beginning of the course. The written exam includes multiple-choice and open-ended questions. Answering correctly to all the questions results in getting a written exam score (WES) of 60 points. To be approved, the student must achieve at least 30 points (50%).
- The final project is assessed according to the details given above, where completing all the features and requirements results in getting a final project score (FPS) of 25 points. The mandatory activities account for 12.5 points (50%).
Throughout the course, several programming assignments are associated with each lecture. Submitting on time (through Canvas) and having the assignments approved will result in getting up to 15 assignment points (AP) to be used towards the final grade of the course.
Once a student completes all these three parts the Final Grade (FG) of the course is computed as the sum of follows:
- FG = WES + FPS + AP
The grading scale is the following:
- [90, 100]: 5
- [75, 90): 4
- [55, 75): 3
- <55: Fail
If you fail one of the examination parts (final project and/or exam), you can sign up for one of the re-exam instances. In this case, the approved part (exam or final project) does not need to be re-examined, i.e., you only need to do the part where you failed. Note that re-examination will only be considered during the re-examination periods. The project orientation time is provided in full during the learning period, and re-examination periods do not have any project orientation session.
Course summary:
Date | Details | Due |
---|---|---|