JCU Logo

JOHN CABOT UNIVERSITY

COURSE CODE: "CS 320"
COURSE NAME: "Advanced Programming: Python"
SEMESTER & YEAR: Spring 2022
SYLLABUS

INSTRUCTOR: Patrizio Angelini
EMAIL: [email protected]
HOURS: MW 3:00 PM 4:15 PM
TOTAL NO. OF CONTACT HOURS: 45
CREDITS: 3
PREREQUISITES: Prerequisite: CS 160
OFFICE HOURS: Regular: Tuesday 11,30AM-12,30AM. Available by appointment in other time slots.

COURSE DESCRIPTION:
This course will focus on advanced programming techniques and introduce concepts of algorithm design and analysis, using Python, a modern programming language that is popular in the industry. Topics of the course include the implementation and evaluation of advanced algorithms, the design and deployment of Web applications, and the fundamentals of programming for data management and analysis.
SUMMARY OF COURSE CONTENT:
We will first revise several state-of-the-art algorithms for standard Computer Science problems, such as sorting a set of integers, searching for an item in a list, etc. We will implement these algorithms and carry out an experimental analysis of their performance. After introducing some principles of computational complexity, we will perform a theoretical evaluation and compare its results with those of our previous experiments.

We will then learn how to design and implement a Web application, to create a web-site with dynamic content, where users can interact with the server functionalities via their browser.

We will finally introduce the main programming techniques to deal with data. In particular, we will learn the basics of how to store data in a file or a simple database, and how to later retrieve such data efficiently. Then, we will review some tools to plot data into charts, in order to perform a visual analysis.

The main programming language used in the course is Python, indeed currently one of the most popular languages in the industry, due to its flexibility and expressive power. In some cases, especially for web applications, we will also highlight the main differences with other popular languages, in particular Java.

To put theoretical knowledge into practice, we will design and implement in Python a Web application in which users can store data on the server via a web-site, and can retrieve, process, and visualize them on their browser.
LEARNING OUTCOMES:

Upon successful completion of this course, the student:

- will have consolidated their knowledge of programming techniques and improved their programming skills;

- will have the ability to evaluate the quality and the performance of an algorithmic solution to a specific problem;

- will be able to create Web applications based on the network communication between client and server;

- will be familiar with basics concepts of data management and analysis.
TEXTBOOK:
Book TitleAuthorPublisherISBN numberLibrary Call NumberCommentsFormatLocal BookstoreOnline Purchase
Python Crash Course, 2nd Edition A Hands-On, Project-Based Introduction to ProgrammingEric MatthesNo starch press9781593279288     
REQUIRED RESERVED READING:
NONE

RECOMMENDED RESERVED READING:
NONE
GRADING POLICY
-ASSESSMENT METHODS:
AssignmentGuidelinesWeight
Assignments2 home-assignments, which will be evaluated on the quality of the submitted solutions and on a subsequent discussion in the class, and 1 mid-term evaluation.25
ProjectDesign and implementation of an in-class programming project35
Attendance and participationAttendance and participation are fundamental, as students will be involved in practical work during lessons.10
Final examVerification of the knowledge acquired by the student in the course.30

-ASSESSMENT CRITERIA:
AWork of this quality directly addresses the task or problem raised and provides a coherent application of concepts displaying mastery of the algorithmic and programming skills learned. This type of work demonstrates the ability to develop original theoretical solutions and implement them with an element of novelty and originality. There is clear evidence of a significant amount of work beyond that required for the course.
BThis is highly competent level of performance, which directly addresses the question or problem raised. There is a demonstration of some ability to develop novel algorithmic solutions and of the acquisition of solid programming skills to implement them. The work does not suffer from any major errors or omissions and provides evidence of work beyond the required assignments.
CThis is an acceptable level of performance and provides work that is clear but limited, reflecting the information offered in the lectures and resources. The programming skills that emerge from this work are mainly limited to standard solutions.
DThis level of performances demonstrates that the student lacks a coherent grasp of the material or skills. Important concepts are not applied adequately. In effect, the student has barely done enough to persuade the instructor that s/he should not fail.
FThis work fails to show any knowledge or understanding of the task or problem. Most of the work produced is unacceptable or irrelevant.

-ATTENDANCE REQUIREMENTS:

You cannot make-up a major exam (midterm or final) without the permission of the Dean’s Office. The Dean’s Office will grant such permission only when the absence was  caused by a serious impediment, such as a documented illness, hospitalization or death in the immediate family (in which you must attend the funeral) or other situations of similar gravity. Absences due to other meaningful conflicts, such as job interviews, family celebrations, travel difficulties, student misunderstandings or personal convenience, will not be excused. Students who will be absent from a major exam must notify the Dean’s Office prior to that exam. Absences from class due to the observance of a religious holiday will normally be excused. Individual students who will have to miss class to observe a religious holiday should notify the instructor by the end of the Add/Drop period to make prior arrangements for making up any work that will be missed.

Attendance is mandatory and is graded. Students will be granted two absences without penalty. Any other absences will only be excused with medical certificates or permission from the Dean's Office.

ACADEMIC HONESTY
As stated in the university catalog, any student who commits an act of academic dishonesty will receive a failing grade on the work in which the dishonesty occurred. In addition, acts of academic dishonesty, irrespective of the weight of the assignment, may result in the student receiving a failing grade in the course. Instances of academic dishonesty will be reported to the Dean of Academic Affairs. A student who is reported twice for academic dishonesty is subject to summary dismissal from the University. In such a case, the Academic Council will then make a recommendation to the President, who will make the final decision.
STUDENTS WITH LEARNING OR OTHER DISABILITIES
John Cabot University does not discriminate on the basis of disability or handicap. Students with approved accommodations must inform their professors at the beginning of the term. Please see the website for the complete policy.

SCHEDULE

Session

Session Focus

Assignment

Meeting

Place/ Exam Dates

Week 1

Recap of Python programming

Week 2

Implementation of basic algorithms

Week 3

Experimental and theoretical evaluation 

Assignment 1

Week 4

Introduction to Web applications

Week 5

Client-server communication

Week 6

Web frameworks

Week 7

Creating a Web application

Assignment 2

Week 8

Introduction to data management

Week 9

Storing and retrieving data

Week 10

Visualizing data with plots and charts

Assignment 3

 Week 11

Class project: Analysis of requisites

Week 12

Class project: Design

Week 13 and 14

Class project: Implementation

Final Project

Week 15

Please check the final exam schedule for date, time, and venue.

Final exam (comprehensive)