JCU Logo

JOHN CABOT UNIVERSITY

COURSE CODE: "CS 330"
COURSE NAME: "Algorithms and Data Structures"
SEMESTER & YEAR: Spring 2024
SYLLABUS

INSTRUCTOR: Patrizio Angelini
EMAIL: [email protected]
HOURS: TTH 3:00 PM 4:15 PM
TOTAL NO. OF CONTACT HOURS: 45
CREDITS: 3
PREREQUISITES: Prerequisites: One previous course in Computer Science
OFFICE HOURS: Regular: Wednesday: 11:30-12:45. Available by appointment in other time slots

COURSE DESCRIPTION:
This course covers the main principles of algorithm design, introducing fundamental data structures and basic algorithmic techniques. It also discusses how to perform an analysis of algorithms, to establish their correctness and evaluate their efficiency. The emphasis is on choosing appropriate data structures and designing correct and efficient algorithms to operate on them, following standard algorithmic techniques. Principles of complexity theory and challenges arising in modern application domains are also investigated.

SUMMARY OF COURSE CONTENT:

This course will introduce the basic principles and techniques for the design, analysis, and implementation of efficient algorithms and data representations.

It will first define the concept of algorithm and discuss the differences between decision and optimization algorithms. It will then introduce the asymptotic notation for analyzing the efficiency of algorithms and formal methods for establishing their correctness.

The core of the course will then be a discussion of several algorithmic techniques, including greedy algorithms, dynamic programming, integer linear programming, recursion, and divide-and-conquer methods, with examples of applications to combinatorial structures, such as numbers, sets, and graphs. Data structures supporting these techniques will be considered, including arrays, stacks, and queues. The course will be concluded with an introduction to complexity theory and the notion of the hardness of problems, and with a brief analysis of the additional challenges posed by Big Data from the algorithmic perspective.

LEARNING OUTCOMES:

Upon successful completion of this course, the student will have:

  • understood the main principles of algorithm design
  • learnt how to analyse algorithms in terms of efficiency and correctness
  • become familiar with fundamental data structures and their implementation
  • become accustomed to basic algorithmic techniques to solve problems
  • understood the classification of problems based on their complexity.
TEXTBOOK:
Book TitleAuthorPublisherISBN numberLibrary Call NumberCommentsFormatLocal BookstoreOnline Purchase
Introduction to Algorithms, Third EditionThomas H. Cormen, Charles Leiserson, Ronald Rivest, and Clifford SteinMIT Press978-0-262-04630-5  Ebook  
REQUIRED RESERVED READING:
NONE

RECOMMENDED RESERVED READING:
NONE
GRADING POLICY
-ASSESSMENT METHODS:
AssignmentGuidelinesWeight
Home assignmentsTwo home assignments on the development and analysis of algorithms.20
MidtermOne in-class assessment at the end of the first half of the course.20
Paper discussionAn algorithm from a research paper will be assigned to each student, to be presented and discussed in class.20
Final examVerification of the knowledge acquired by the student in the course.30
Attendance and participationAttendance and participation are fundamental, due to the creative and theoretical nature of the topics.10

-ASSESSMENT CRITERIA:
AWork of this quality directly addresses the question or problem raised and provides a coherent argument displaying an extensive knowledge of relevant information or content. This type of work demonstrates the ability to critically evaluate concepts and theory and has an element of novelty and originality. There is clear evidence of a significant amount of reading beyond that required for the course.
BThis is highly competent level of performance and directly addresses the question or problem raised.There is a demonstration of some ability to critically evaluatetheory and concepts and relate them to practice. Discussions reflect the student’s own arguments and are not simply a repetition of standard lecture andreference material. The work does not suffer from any major errors or omissions and provides evidence of reading beyond the required assignments.
CThis is an acceptable level of performance and provides answers that are clear but limited, reflecting the information offered in the lectures and reference readings.
DThis level of performances demonstrates that the student lacks a coherent grasp of the material.Important information is omitted and irrelevant points included.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 issues raised in the question. Most of the material in the answer is irrelevant.

-ATTENDANCE REQUIREMENTS:
ATTENDANCE REQUIREMENTS AND EXAMINATION POLICY
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

Week 1

Introduction to algorithms

Analysis of algorithms: asymptotic notation

Week 2

Searching and Sorting

Week 3

Efficient Sorting

 

Week 4

Divide-and-conquer algorithms

Assignment 1

Week 5

Recursion

Week 6

Dynamic programming

 

Week 7

Basic data structures: array, list, queue, stack

 

Week 8

Graph search: BFS and DFS

Midterm

Week 9

Graph optimization: shortest paths

Week 10

Greedy algorithms

Week 11

Integer linear programming

Assignment 2

Week 12

NP-completeness

Approximation and FPT algorithms

Week 13

Randomized algorithms

Algorithms for Big Data

 

Week 14

Final considerations

Final exam