Course Syllabus

Course-PM

EEN060 Applied object-oriented programming lp3 VT22 (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

Course language: English (Please also keep all communication within the course in English)

Software used: For the entire course, Python 3.9 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.

Following the latest guidelines, the course will follow a hybrid teaching approach. Lectures and labs will be hosted on campus, but all sessions will also have a Zoom call where students can join remotely, interact, ask questions, etc.

Lab sessions are hosted both in Lindholmen and Johanneberg. For those who cannot attend in person, there will be also a Zoom call during the lab sessions where students that need help can receive help from the teacher or TA.

Please indicate here your intentions for attending the sessions in the first two weeks of the course: https://choodle.portal.chalmers.se/BCqWwrHBLUqkKIad

This is just to give the course administration an estimate of how students are planning to attend, and you are not forced to follow your answer if your plans or situation changes.

The complete course calendar is available here: https://chalmers.instructure.com/calendar?include_contexts=course_17328#view_name=month&view_start=2022-01-17  

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. The lecture notes can be accessed through the link: https://onu2.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.9/
  2. Visual Studio Code documentation for Python: https://code.visualstudio.com/docs/python/python-tutorial 
  3. SQLAlchemy version 1.4/2.x online documentation: https://docs.sqlalchemy.org/en/14/
  4. Flask version 2.x online documentation: https://flask.palletsprojects.com/en/2.0.x/
  5. Jinja version 3.x online documentation: https://jinja.palletsprojects.com/en/3.0.x/
  6. WTForms 3.x online documentation: https://wtforms.readthedocs.io/en/3.0.x/ 
  7. Requests online documentation: https://requests.readthedocs.io/en/master/
  8. Bootstrap version 5.x online documentation: https://getbootstrap.com/docs/5.1/ 
  9. YouTube Tutorial: Flask Tutorial by Corey Schafer on YouTube: Python Flask Tutorial: Full-Featured Web App Part 1 - Getting Started

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:

  • Lectures: 24 h (mandatory)
  • Computer labs: 24 h
  • Project orientation: 12 h
  • Self-study
  • Final project (mandatory)
  • Programming assignments
  • Final exam (mandatory)

Lectures

Students should prepare for the lectures by reading the associated material (lecture notes).

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. An attendance counter will be available on canvas.

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. Statements, variables, and code quality
  3. Conditional statements and loops
  4. Data structures
  5. Standard and external modules
  6. Object-oriented programming
  7. Database modeling
  8. Database implementation
  9. Web services
  10. Web pages
  11. Integrating databases with web pages
  12. Code quality for web applications

Lab sessions

Lab sessions will be hosted both in Lindholment and Johanneberg. 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 programming assignment solutions on the Internet, 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.
  • Assignments will be made available regularly after lectures.
  • Any issues/requests/comments related to the course can be directed to the course teacher (Carlos Natalino) during one of the lectures or through messages in Canvas.
  • Any doubts related to programming assignments, final project, or Python should be directed to the teacher or teaching assistants during the lab sessions.

Programming assignments

For the first 5 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, 7 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 up to one week after the assignment is closed (one week after the "available until" date).
  • Submitting on time and having all the assignments approved will result in getting 15 bonus points (BP) 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:
    • 1-2 assignments: 1 BP each
    • 3rd: 1.5 BPs
    • 4th: 2 BPs
    • 5th: 2.5 BPs
    • 6th: 3 BPs
    • 7th: 4 BPs

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.

The project evaluation has a few mandatory features, while additional features are optional.

The final project is divided into several different deadlines where the students will define their project partner, the subject of the project, the database modeling, database implementation, and finally the final project submission.

The two last weeks of the course are devoted to project orientation and implementation.

  • Project rules:
    • You are asked to form groups of two students.
    • Cooperation between the groups is considered cheating and is subject to disciplinary actions.
    • Each group should submit the documents required for the checkpoints described below.
    • The documents should be submitted through Canvas according to the appropriate assignment.
    • You can get feedback regarding your project during the lab sessions.
    • The project must be forked from the skeleton app available on GitHub and shared with the teacher and TAs on GitHub.
  • Project examination
    • The project accounts for up to 60 points (60% of the total points of the course).
    • To be considered, the project must pass all the code quality assessments, and have 100% unit test coverage. A script is available for the student to be able to evaluate his/her project before submission.
    • The project is divided into the following features, each one worth 10 points towards the final grade. Each feature should be executed over at least one database table. Each feature must also be covered by a functional test.
      • List (mandatory)
      • Search (mandatory)
      • Detail (mandatory)
      • Create
      • Update
      • Delete
  • To get a “PASS” score your project should:
    • Be a web application that allows users to manipulate data in a database.
    • Have in its database at least 4 tables. Association tables do not count towards this requirement.
    • Implement at least the 3 mandatory features listed above.
    • Include any additional external modules to the requirements.in file.
    • Implement the initdb function inserting a representative set of rows at every table of the database.
    • Should not be a blog or a personal finances project.
    • Be forked from the skeleton app available on GitHub and include the latest updates from the skeleton project.
  • Deadlines: the project will have checkpoints as follows.
    • Project group
      • Names of the two students of the group.
    • Project Idea
      • Names of the two students of the group.
      • Title of the project.
      • Brief description of the types of users that will interact with the application.
      • Brief description of the data that the application should be able to handle.
      • User stories for each feature covering the workflow that the user should be able to execute.
      • Submission in the form of the MS Word document following the template available in the modules.
      • In case of similar project ideas, the group that submitted the idea first will have precedence.
    • Running the example project
      • Download and run the example project on your computer.
      • Show the project running to one of the TAs during a lab session and the TA will approve this deadline.
      • If not possible to attend a lab session on that week, record a short video (e.g., by using Zoom) showing the example project correctly running on your computer.
    • Project Proposal
      • Should contain all the information included in the “Project Idea” submission, in addition to any necessary update.
      • Should include a description of the database (tables, columns, and data types).
      • Submission in the form of the MS Word document following the template available in the modules.
    • Database execution of the final project
      • Should contain the creation of the database and the insertion of a few rows for each existing table in the project within the recreate_db function.
      • Submission in the form of a zipped project.
    • Final Project
      • Should contain all the information included in the “Project Proposal” submission, in addition to any necessary update.
      • Should contain all the project files compressed in a zip file.
      • Students can opt-in to allow the project to be used in the next instances of the course as an example.
      • Submission in the form of a zip file containing the project folder and the MS Word file with the project description.

Final exam

The final exam tests the theoretical and analytical skills developed during the course. As of now, the final exam is planned to be applied on campus. To be approved, the student needs to achieve a score of at least 50% of the exam score.

Changes made since the last occasion

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

2022-01-14:

  • Following the latest guidelines, the course will follow a hybrid teaching approach. Lectures and labs will be hosted on campus, but all sessions will also have a Zoom call where students can join remotely, interact, ask questions, etc.

2022-01-19:

  • Inclusion of student representative names and contacts.

2022-01-26:

  • About lectures: Quiz related to the reading material (attendance will be registered by answering to the quiz)

2022-02-10:

  • About the final project idea, one item was added: In case of similar project ideas, the group that submitted the idea first will have precedence.

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. 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 40 points. To be approved, the student must achieve at least 20 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 60 points. The mandatory activities account for 30 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 bonus points (BP) 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 + BP

The grading scale is the following:

  • > 89: 5
  • 75-89: 4
  • 55-74: 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