Course Syllabus

Course-PM

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

Course offered by the Department of Electrical Engineering

Course language: English

Python version: For the entire course, Python 3.7 will be used as the official version. Software used to support the course are Anaconda, JupyterLab and PyCharm Community Edition.

Contact details

  • Teacher and course responsible
    • Carlos Natalino /  / Campus Johanneberg, EDIT building, room 6421.
    • Any issues/requests/comments related to the course can be sent preferably through messages in Canvas.
    • Office hours: Fridays, 15-16, upon request. Meetings can be scheduled by replying with your name in the date that you want to meet here: Teacher office hours.
  • Teaching assistants
    • Maryam Lashgari /  / Campus Johanneberg, EDIT building, room 6418.
    • Lei Xue /  / Campus Johanneberg, EDIT building, room 6418
    • 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)  / Campus Johanneberg, EDIT building, room 6416.
  • Student representatives

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.

Course literature

The literature is usually enriched with material presented during the lectures. 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.

  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.7/
  3. SQLAlchemy online documentation: https://docs.sqlalchemy.org/en/13/index.html
  4. Flask online documentation: http://flask.palletsprojects.com/en/1.1.x/#
  5. Jinja online documentation: https://jinja.palletsprojects.com/en/2.11.x/
  6. Requests online documentation: https://requests.readthedocs.io/en/master/
  7. JupyterLab online documentation: https://jupyterlab.readthedocs.io/en/stable/index.html
  8. PyCharm online documentation: https://www.jetbrains.com/pycharm/learning-center/
  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 hour distribution among the activities:

  • Lectures: 28 h
  • Computer labs: 24 h
  • Self-study: 80 h
  • Final project: 50-60 h
  • Optional assignments: 30-40 h

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 in the course modules page. The lectures will be recorded and posted 24-48 hours after the lecture on Chalmers Play and YouTube.

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 19.4 “Integrated Development Environments”
    • Appendix B “Install Anaconda”.
  • Python online documentation:
2 Introduction, statements and variables
  • Book:
    • Chapter 2 “Data: types, values, variables and names”
    • Chapter 3 “Numbers”
    • Chapter 5 “Text strings”
  • Python online documentation:
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
  • Book:
    • Chapter 9 “Functions”
    • Chapter 19.9 “Log error messages”
  • Python online documentation:
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
14 Outlook
  • Book:
    • Chapter 19 “Be a Pythonista”
    • Chapters 20-22 (optional)
  • YouTube Tutorial: parts 9-15 (optional)
15 Project orientation and discussion
  • Additional literature to be communicated before the lecture

Computer labs

Computer labs are divided into two parts. The first part will have a brief introduction (in the form of few slides and/or solving a few examples) given by the teacher/teaching assistant about the two topics of the week, taking the first two hours. Then, for the remaining two hours, students are encouraged to solve the programming assignments and take questions to the teacher and TAs.

Students can use either the desktop computer available at the lab rooms or bring their own laptops with the appropriate software installed. When using your own laptop, students are encouraged to follow installation, Quickstart and user guides available at the tools' webpages.

Class Topics Lectures Preparation
1 Getting familiar with the tools used and Python language 1 + 2
2 Solving problems involving math and text operations 3 + 4
3 Modeling and solving problems with object-oriented programming 5 + 6 -
4 Input and output operations, and error handling 7 + 8 -
5 Building web services that store/retrieve information to/from databases 9 + 10
6 Building web pages that presents/receives information to/from users and databases 11 + 12 -
7 Building an application integrating web services, web pages and databases 13 + 14 -
8 Project orientation and discussion - -

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 present to the teacher/TAs during our lab sessions.

  • Rules:
    • The assignment list can be downloaded from Canvas right 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 one week to submit the solved assignments to Canvas. A few exceptions may occur due to schedule.
  • Students can use up to four late dates, which gives you the opportunity to submit an assignment up to two weeks after the deadline.
  • Submitting on time (through Canvas) and having all the assignments approved will result in getting 10 bonus points (BP) to be used towards the final grade of the course.

Final project

  • Project rules:
    • You are asked to form groups of two students.
    • Each group should submit the documents required for the 3 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.
    • There is an available example project that can be used as a starting point for your project.
  • In order to get a “PASS” score your project should:
    • Be a web application that allows users to manipulate data in a database.
    • Allow the user to execute the following basic operations: list, search, insert, edit, and delete.
    • Have in its database at least 4 tables to be manipulated by the web application with the basic operations described before.
    • 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 as “run.py”.
  • Deadlines: the project will have checkpoints as follows.
    • Project group (deadline: April 17th)
    • “Project Idea” (deadline: April 29th)
      • 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.
      • A description of the classes modeling the data that will be manipulated.
      • Submission in the form of an MS Word document.
      • Template document available here: Instructions, documents and FAQ
    • "Running the example project" (deadline: May 7th)
    • “Project Proposal” (deadline: May 15th)
      • 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 an MS Word document.
      • Template document available here: Instructions, documents and FAQ
    • "Database execution of the final project" (deadline: May 25th)
      • Should contain the creation of the database and the insertion of a few rows for each table.
      • Submission in the form of a Python file named "loaddatabase.py"
    • “Final Project” (deadline: June 5th)
      • 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.

Changes made since the last occasion

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

2020-05-27:

  • Updates to the project requirements:
    • Additional explanation about the requirements.txt file.
    • Removing the requirements related to web services.

2020-04-15:

  • The project deadlines part was updated including links to the documents and submission form.
  • Office hours updated from Wednesdays to Fridays, starting from week 16.
  • Information regarding student representatives.

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 1 bonus point (BP) per assignment 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

Course Summary:

Date Details Due