Info
Foto sezione
Logo Bocconi

2023-2024 a.y.
Course offered to incoming exchange students

20602 - COMPUTER SCIENCE (ALGORITHMS)

DSBA
Department of Computing Sciences

Course taught in English



Go to class group/s: 31

DSBA (6 credits - II sem. - OBCUR  |  FIS/02)
Course Director:
ADAM POLAK

Classes: 31 (II sem.)
Instructors:
Class 31: ADAM POLAK


Synchronous Blended: Lezioni erogate in modalità sincrona in aula (max 1 ora per credito online sincrona)

Suggested background knowledge

To feel comfortable in this course students should be fluent in a modern programming language (e.g., Python or C/C++) and familiar with elementary calculus, linear algebra, and discrete mathematics.


Mission & Content Summary
MISSION

Efficient algorithms lie at the core of computing. The course will teach the students the fundamentals of designing and analysing algorithms. The students will learn to apply design paradigms when designing their own algorithms, and will be able to estimate the computational complexity and resource requirements of algorithms they encounter. They will be familiarized with important algorithms and will use them as building blocks in their own work.

CONTENT SUMMARY

Basics
– Asymptotic notation
– Sorting
– Searching

 

Data structures
– Arrays, lists, stacks, queues
– Heaps
– Binary trees

 

Graphs
– BFS, DFS
– Shortest paths: Dijkstra, Bellman–Ford

 

Algorithm design techniques
– Dynamic programming
– Greedy approach
– Divide and conquer

 

Cryptography
– Basic notions
– Secret-key encryption
– Public-key schemes, RSA


Intended Learning Outcomes (ILO)
KNOWLEDGE AND UNDERSTANDING
At the end of the course student will be able to...
  • describe classic algorithms and algorithm design techniques;
  • analyse correctness and efficiency of algorithms;
  • define basic concepts from computational complexity;
  • understand sources of hardness of computational problems.
APPLYING KNOWLEDGE AND UNDERSTANDING
At the end of the course student will be able to...
  • implement algorithms covered in class;
  • model problems stated in natural language as formal computational problems;
  • design and implement algorithms, and analyse their correctness and efficiency;
  • test, debug, and optimize implementations of algorithms.

Teaching methods
  • Face-to-face lectures
  • Exercises (exercises, database, software etc.)
  • Individual assignments
DETAILS

Homework exercises will involve designing and analysing algorithms for posted problems. Students will present their solutions in class and/or write down and submit their solutions.

 

There will be also individual programming assignments that involve implementing algorithms learned in class. Students will submit their solutions via an online system that will provide them with live feedback.


Assessment methods
  Continuous assessment Partial exams General exam
  • Written individual exam (traditional/online)
  •     x
  • Individual assignment (report, exercise, presentation, project work etc.)
  • x    
    ATTENDING AND NOT ATTENDING STUDENTS

    There will be a final exam, homework assignments, and programming assignments.

     

    Assignments are not mandatory. Each completed assignment guarantees a certain percentage of the final grade and decreases the contribution of the final exam by the same percentage. For instance, if a student completes assignments worth in total 40%, their final grade (on the scale from 0 to 100) is calculated as 40 + 0.6 * [exam-result].

     

    The exam and homework assignments will test the students' understanding of basic concepts presented in class, and their ability to apply learned algorithms and algorithm design techniques to new computational problems stated in natural language, explain and implement proposed solutions, and reason about their correctness and efficiency. The programming assignments will test the students' ability to understand and implement algorithms learned in class.
     


    Teaching materials
    ATTENDING AND NOT ATTENDING STUDENTS

    T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduction to Algorithms, MIT Press, 3rd edition.

     

    Additional materials – e.g., research papers, technical reports, notes – will be posted on the course website throughout the semester.
     

    Last change 06/12/2023 11:53