Course Syllabus

Course-PM

EEN065 Applied object-oriented programming lp4 VT21 (7,5 hp)

Course offered by the Department of Electrical Engineering

Course language: English

Python version: For the entire course, Python 3.8 will be used as the official version. Software used to support the course: Miniconda and PyCharm Professional Edition with a free educational license.

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 is available. 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
  • Teaching assistants
    • Ehsan Etezadi
    • Lei Xue
    • Maryam Lashgari
    • Any issues/requests/comments related to the course can be sent preferably through messages in Canvas.
    • Any doubts related to programming assignments, final project, or Python should be directed to the teacher or teaching assistants preferably during the computer labs.
  • Paolo Monti (Course Examiner)
    • Any issues/requests/comments related to the course can be sent preferably through messages in Canvas.
  • Student representatives
    • Sara Aatig
    • John Börjesson
    • Johan Jovanovic
    • Sara Mashial
    • Elias Tengelin
    • Mid course meeting report: mid-course-meeting.pdf 

Cooperation between the groups is considered cheating and is subject to disciplinary actions.

Course purpose

The course aims at providing students with no previous experience 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 of the course will be hosted through Zoom.

The links to the Zoom meetings are available here: https://chalmers.instructure.com/courses/13362/external_tools/419 

The complete calendar is available here: https://chalmers.instructure.com/calendar?include_contexts=course_13362#view_name=month&view_start=2021-03-22 

Course literature

The literature is usually enriched with the material presented during the lectures and lecture notes. All references to chapters and sections in the book will also refer to free online material as well for those who choose not to buy the book. However, using the book is recommended for a complete reference.

  1. Book: Introducing Python: Modern Computing in Simple Packages, by Bill Lubanovic, 2nd edition, O’Reilly, 2020, ISBN: 978-1492051367.
  2. Python online documentation: https://docs.python.org/3.8/
  3. PyCharm online documentation: https://www.jetbrains.com/pycharm/learning-center/
  4. SQLAlchemy online documentation: https://docs.sqlalchemy.org/en/13/index.html
  5. Flask online documentation: http://flask.palletsprojects.com/en/1.1.x/#
  6. Jinja online documentation: https://jinja.palletsprojects.com/en/2.11.x/
  7. Requests online documentation: https://requests.readthedocs.io/en/master/
  8. Bootstrap online documentation: https://getbootstrap.com/docs/4.6/getting-started/introduction/ 
  9. YouTube Tutorial: Flask Tutorial by Corey Schafer on YouTube: Python Flask Tutorial: Full-Featured Web App Part 1 - Getting Started

Course design

The course is designed with the following activities:

  • Lectures: 28 h
  • Computer labs: 24 h
  • Project orientation: 12 h
  • Self-study
  • Final project
  • Optional assignments

Students should prepare for the lectures by reading the material associated with the lecture. The lectures are meant to explain and highlight important parts of the content, not as a replacement for the reading material.

Lectures and computer labs are not mandatory. Attendance will be monitored but does not count for your final grade.

Lectures

Lectures will be hosted through zoom following the course schedule. Links to the zoom meeting are available on the course page, on the Zoom canvas module, and on the course calendar. 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.

Students must prepare for each lecture by reading the associated literature under "preparation" in the table below.

Lecture Topics Preparation
1 Course overview and introduction to computer programming
  • Book:
    • Chapter 1.4 “Python in the real world”;
    • Chapter 1.5 “Python versus the language from planet X”;
    • Chapter 1.6 “Why Python?”;
    • Chapter 1.7 “Why not Python?”;
    • Chapter 1.9 “Installing Python”;
    • Chapter 9 “Functions”;
    • Chapter 19.4 “Integrated Development Environments”
    • Appendix B “Install Anaconda”.
  • Python online documentation:
2 Introduction, statements and variables
3 Conditional statements and loops
  • Book:
    • Chapter 4 “Choose with if”
    • Chapter 6 “Loop with while and for”
  • Python online documentation:
4 Data structures
  • Book:
    • Chapter 7 “Tuples and lists”
    • Chapter 8 “Dictionaries and sets”
  • Python online documentation:
5 Standard and external modules
6 Object-oriented programming
  • Book:
    • Chapter 10 “Oh oh: objects and classes”
  • Python online documentation:
7 Error handling, input and output 1/2
8 Input and output 2/2
9 Communicating with databases
10 Web services
11 Web pages
  • Book:
    • Chapter 18 “The Web, untangled”
  • Flask online documentation:
12 Integrating databases, web services and web pages
  • YouTube Tutorial: parts 1-8
13 Advanced topics for the development of digital services
  • Additional literature to be communicated before the lecture
14 Outlook
  • Book:
    • Chapter 19 “Be a Pythonista”
    • Chapters 20-22 (optional)
  • YouTube Tutorial: parts 9-15 (optional)
15+16 Project orientation and discussion
  • Additional literature to be communicated before the lecture

Computer labs

Computer labs are divided into three activities. The first activity is related to showing the students how to use the concepts studied in practice, through live demonstration or recorded videos followed by quizzes. The teaching assistants will be available to take questions individually. The teacher will be on the main call taking general questions. If students finish the quiz, they are encouraged to use the remaining time to solve programming assignments.

Since the course will be taught online, students are required to use their own computers with the appropriate software installed. Students are encouraged to follow installation, Quickstart, and user guides available on the tools' webpages.

General guidelines

  • 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) 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 computer labs.

Programming assignments

For the first 10 lectures, there is a list of programming assignments to be solved and submitted through Canvas. There are also a number of computer assignments that students should record 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 Canvas.
  • Deadline: Students have around one week to submit the solved assignments to Canvas. The specific due date is available for each assignment.
  • Students can use up to three late dates, which gives them the opportunity 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 (through Canvas) and having all the assignments approved will result in getting 13 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-7 assignments: 1 BP each
    • 8th: 1.5 BP
    • 9th: 2 BP
    • 10th: 2.5 BP

Final project

  • Final project material: Project material 
  • 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 second half of the computer labs.
  • In order 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.
    • Allow the user to execute the following basic operations: list, search, insert, edit, and delete. Each operation needs to be available for at least one of the tables (excluding the table User which already comes with these functionalities).
    • If you use any additional external module, include a file with a list of the Python packages necessary for its correct execution (i.e., requirements.txt).
    • Include a script that initializes the database, i.e., inserts initial data that enables the project to be used and tested (i.e., load_database.py).
    • Have its main file named “run.py”.
    • Should not be a blog or a personal finances project.
  • Deadlines: the project will have checkpoints as follows.
    • Project group
      • Names of the two students of the group.
      • Submission in the form of an MS Word document (template linked above).
    • 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 and the workflow that the user should be able to execute.
      • Submission in the form of the MS Word document (template linked above).
    • Running the example project
      • Download and run the example project on your own computer.
      • 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 (template linked above).
    • 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.
      • Submission in the form of a zipped file containing the "models.py" and "load_database.py" file.
    • 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.
      • Optionally, the students can post their projects on GitHub under their repository.
      • 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 (template linked above).

Changes made since the last occasion

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

2021-03-23:

  • Inclusion of more links to lecture 2 online material

2021-04-13:

  • Student representatives were added to the syllabus

2021-04-23:

  • Minutes from the mid-course meeting were added to the syllabus

2021-04-26:

  • Clarifications about the re-exam were added to the syllabus

2021-05-18:

  • Adjusted the following two points of the project requirements:
    • Have in its database at least 4 tables. Association tables do not count towards this requirement.
    • Allow the user to execute the following basic operations: list, search, insert, edit, and delete. Each operation needs to be available for at least one of the tables (excluding the table User which already comes with these functionalities).

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.

Examination form

The examination consists of passing a written exam and completing the final project. In order 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 time 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 100 points.
  • The final project has a binary outcome: P (pass) or F (fail). The requirements to get a pass grade are explained above. If the project is not turned in through Canvas by the deadline, then this part is considered as failed, and the student is invited to come back the next time the course is given and turn in the final project of that year.

Throughout the course, a number of programming assignments are associated with each lecture. Submitting on time (through Canvas) and having the assignments approved will result in getting up to 13 bonus point (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 + 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.

Course Summary:

Date Details Due