Course syllabus
Course-PM
EEN065 Applied object-oriented programming lp4 VT24 (7.5 hp)
The course is offered by the Department of Electrical Engineering (E2)
If you have any questions regarding the information on this page, please share it 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)
Software used: For the entire course, Python 3.12 will be used as the official version. Software used to support the course: Miniconda and Visual Studio Code with the course extension pack. You are expected to install the software on your laptop. The latest versions of operational systems (MS Windows 10 or newer; macOS 13 or newer) are supported. Check supported platforms on the software webpages.
Course channel: The course maintains a channel on Chalmers Play where recorded lectures and labs will be uploaded. The videos always show up first in the "media" tab. The channel also contains content from previous instances of the course. Note that there might occur changes in the course compared to previous instances. Always use the videos posted for this learning period.
Contact details
- Teacher and course responsible
- Carlos Natalino / carlos.natalino@chalmers.se / 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.
- Office hours: You should book a slot here: Teacher office hours
- 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
- Kalle Alsterberg <kalleal@student.chalmers.se>
- Ikram Elmi <ikrame@student.chalmers.se>
- Cevin Harrinkoski <cevinh@student.chalmers.se>
- Mateo Ortiz Westermark <mateoo@student.chalmers.se>
- Julia Sandertoft <julsande@student.chalmers.se>
- Mid-course meeting minutes: Mid-course meeting.pdf
Course purpose
The course aims at providing students with no previous experience with sufficient programming skills to use Python for the back-end development of digital services.
Schedule
The schedule of the course is in TimeEdit. All sessions are hosted in Lindholmen.
Course literature
The course is supported by lecture notes that must be read before the respective lecture. 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.
Therefore, students taking the course are not required to buy any book.
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.12/
- Python Tutorial: https://docs.python.org/3.12/tutorial/index.html
- Python Standard Library: https://docs.python.org/3.12/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 2.x online documentation: https://flask.palletsprojects.com/en/2.0.x/
- Jinja version 3.x online documentation: https://jinja.palletsprojects.com/en/3.0.x/
- WTForms 3.x online documentation: https://wtforms.readthedocs.io/en/3.0.x/
- Bootstrap version 5.x online documentation: https://getbootstrap.com/docs/5.2/
Nevertheless, the following books are recommended reference reading for those who want to further develop their knowledge. Paperback versions of the books are usually available in Swedish book stores. Digital copies are also available at Amazon.com (Kindle) and ebooks.com.
- Introducing Python: Modern Computing in Simple Packages, by Bill Lubanovic, 2nd edition, 2020, ISBN: 978-1492051367.
- Covers topics of lectures 1-6
- Flask Web Development: Developing Web Applications with Python, by Miguel Grinberg, 2nd Edition, 2018, ISBN: 978-1491991732.
- Covers topics of lectures 7-12
- Test-Driven Development with Python, by Harry Percival, 2nd Edition, 2017, ISBN: 978-1491958704.
- 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 with the following activities (optional activities are explicitly marked):
- Lectures: 28 h
- 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.
The lectures will have the following structure, depending on the dynamic of the lecture:
- 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.
The attendance of lectures are not monitored. This means that there is no minimum attendance to be approved in the course. Nevertheless, everything discussed in the lectures can be part of the course examination and may not be communicated through other means.
The lectures will be given only on campus, so check the TimeEdit link above to see the classroom where each lecture will be.
The lectures will be recorded and posted 24-48 hours after the lecture on Chalmers Play. Note that issues/problems might occur with the recording, and these issues are out of the control of the course administration.
List of lectures:
- Course overview and introduction to computer programming
- Introduction to algorithms and programming
- Statements, variables, and code quality
- Code quality for web applications
- Conditional statements and loops
- Data structures
- Standard and external modules
- Object-oriented programming
- Database modeling and implementation
- Data visualization and plotting
- Project definition
- Web services
- Web pages
- Integrating databases with web pages with the example project
Lab sessions
Check the TimeEdit schedule for the location of each session.
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
Computers in the lab rooms have the necessary software for developing the activities, but students are encouraged to bring their own laptops to the lab sessions. Students are also encouraged to bring their own ear/headphones to the sessions so they can listen to the recorded videos.
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. It is your responsibility to submit assignments by the deadline.
- Only submissions to canvas assignments will be accepted. Submissions through email or canvas messages will not be considered.
- 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 during the sessions.
- Use the discussion forum for general questions. Expect a response time of 1-2 business days. Technical questions sent through email or canvas messages will not be considered.
Programming assignments
For weeks 2-7, there is a list of programming assignments to be solved and submitted through Canvas. There are also two computer assignments that students should record and submit. Therefore, 9 assignments are available for the students to complete throughout the course. These are marked as graded assignments in the assignment list.
- 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.
- Once the late date deadline passes, there are no opportunities to resubmit assignments.
- Programming assignments are graded during the last week of the course.
- Submitting on time and having all the assignments approved will result in getting 20 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 APs
- 3.5 APs
- 5 APs
- 7 APs
- 9.5 APs
- 12.5 APs
- 16 APs
- 20 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 the project instructions page.
- 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.
- To be approved, the final project must use the database correctly.
- 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 August and one in October. 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. Programming assignments are not part of the re-examination.
Changes made since the last occasion
A summary of changes made since the last occasion will appear whenever changes are made.
- 2024-04-11: Clarifications about the database in the final project, and the role of the TAs during lab sessions.
- 2024-04-19: Minutes from the mid-course meeting added.
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 50 points. To be approved, the student must achieve at least 25 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 30 points. The mandatory activities account for 15 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 20 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 |
---|---|---|