Course Syllabus

Course-PM

EEN060 2023 Applied object-oriented programming lp3 VT23 (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.10 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 and 11; macOS 11, 12, and 13) 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 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

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.

Sessions with 2 hours are always lectures hosted in Lindholmen. Sessions with 4 hours are always labs and are hosted both in Lindholmen and Johanneberg.

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.

  1. Python online documentation: https://docs.python.org/3.10/
  2. Visual Studio Code documentation for Python: https://code.visualstudio.com/docs/python/python-tutorial 
  3. Redis Python: https://redis-py.readthedocs.io/en/stable/ 
  4. Matplotlib: https://matplotlib.org/ 
  5. Requests online documentation: https://requests.readthedocs.io/en/master/
  6. Flask version 2.x online documentation: https://flask.palletsprojects.com/en/2.0.x/
  7. Jinja version 3.x online documentation: https://jinja.palletsprojects.com/en/3.0.x/
  8. WTForms 3.x online documentation: https://wtforms.readthedocs.io/en/3.0.x/ 
  9. 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.

  1. Introducing Python: Modern Computing in Simple Packages, by Bill Lubanovic, 2nd edition, 2020, ISBN: 978-1492051367.
    • Covers topics of lectures 1-6
  2. Flask Web Development: Developing Web Applications with Python, by Miguel Grinberg, 2nd Edition, 2018, ISBN: 978-1491991732.
    • Covers topics of lectures 7-12
  3. Test-Driven Development with Python, by Harry Percival, 2nd Edition, 2017, ISBN: 978-1491958704.

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

  • Quiz related to the reading material (attendance will be registered by answering to the quiz)
  • 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 lectures are mandatory, so attendance will be monitored. To be approved, a student must have at least 75% attendance.

As of now, the lectures will be given 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:

  1. Course overview and introduction to computer programming
  2. Introduction to algorithms and programming
  3. Statements, variables, and code quality
  4. Code quality for web applications
  5. Conditional statements and loops
  6. Data structures
  7. Standard and external modules
  8. Object-oriented programming
  9. Database modeling and implementation
  10. Data visualization and plotting
  11. Project definition
  12. Web services
  13. Web pages
  14. Integrating databases with web pages

Lab sessions

Check the TimeEdit schedule for the location of each session.

Lab sessions have four objectives:

  1. Encourage students to practice the programming concepts discussed during the week through recorded videos
  2. Test the student's learning through a quiz
  3. Provide time for students to get together and solve the programming assignments
  4. 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.
  • 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

For each of the first 7 weeks, 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.

  • 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. 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 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, irrespective of their order, submitted and approved:
    • 1st-2nd assignments: 1 AP each
    • 3rd-4th: 1.5 APs
    • 5th: 2 APs
    • 6th: 2.5 APs
    • 7th: 3 APs
    • 8th: 3.5
    • 9th: 4 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.

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.

Changes made since the last occasion

A summary of changes made since the last occasion will appear whenever changes are made.

2023-01-17:

  • Published the link to the lecture notes.

2023-01-23:

  • Included the names of the student representatives
  • Updated link to the Chalmers VPN instructions

2023-01-30:

  • Clarifying ranges in the intervals of grades.

2023-03-02:

  • Including report from mid-course meeting.

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.

Course Summary:

Date Details Due