JCU Logo

JOHN CABOT UNIVERSITY

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

INSTRUCTOR: Patrizio Angelini
EMAIL: [email protected]
HOURS: TTH 11:30 AM 12:45 PM
TOTAL NO. OF CONTACT HOURS: 45
CREDITS: 3
PREREQUISITES: Prerequisite: CS 160
OFFICE HOURS: Regular: Wednesday 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:

The main goal of the course is to 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.

Together with the aspects related to the graphical interface, which is developed in HTML, a major component of the course will consist of an advanced investigation of programming techniques to deal with data. In particular, the course will introduce principles of database design and management, and the techniques to access a database that is stored on a server and interact with it to store and retrieve data. 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.

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  Ebook  
REQUIRED RESERVED READING:
NONE

RECOMMENDED RESERVED READING:
NONE
GRADING POLICY
-ASSESSMENT METHODS:
AssignmentGuidelinesWeight
Assignments2 in-class assignments on specific topics discussed in class25
Final Group ProjectDesign and implementation of group programming project. The evaluation will also be based on the work performed in class and on a final presentation.35
Attendance and participationAttendance and participation are fundamental, as students will be involved in practical work during lessons.10
MidtermThe midterm will consist of a presentation of an idea for an application to be developed in the final project. 15
Home assignment1 home assignment on the topics discussed in class15

-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. Students who will be absent from a major exam must notify the Dean’s Office prior to that exam.  
Attendance is mandatory and is graded.

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

Introduction to Web applications

MVC pattern

Week 3

Database design

 

Week 4

Client-server communication

Web frameworks

Assignment 1

Week 5

Creating a Web application in Django

Introduction to HTML

Week 6

Reading the user input

Passing data over the application

Week 7

Storing and retrieving data in the server database

Assignment 2

Week 8

Group project: Analysis of requisites

 

Week 9

Storing and retrieving data

Midterm

Week 10

Visualizing data with plots and charts

 

 Week 11

Group project: Design

Week 12 to 14

Group project: Implementation

Final Project

Week 15

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

Final exam (comprehensive)