Course 2024-2025 a.y.

20602 - COMPUTER SCIENCE (ALGORITHMS)

Department of Computing Sciences

Course taught in English

Student consultation hours
Class timetable
Exam timetable
Go to class group/s: 31
DSBA (6 credits - II sem. - OP  |  INF/01)
Course Director:
ADAM TEODOR POLAK

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


Suggested background knowledge

You are going to feel comfortable in this course, if you are fluent in a modern programming language (e.g., Python or C/C++) and you are 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 you the fundamentals of designing and analysing algorithms. You will learn to apply design paradigms when designing your own algorithms, and you will be able to estimate the computational complexity and resource requirements of algorithms you encounter. You will get to know important algorithms and you 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

– Network flows

 

Algorithm design techniques
– Dynamic programming
– Greedy approach
– Linear programming

 

Hardness
– P versus NP, Cook–Levin theorem
– Proving NP-hardness with polynomial-time reductions


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

  • Lectures
  • Practical Exercises
  • Individual works / Assignments
  • Collaborative Works / Assignments

DETAILS

Homework exercises will involve designing and analysing algorithms for posted problems. For some of them, you will present your solutions oraly in class, for others you will write them down and get feedback on your writing. Some of these exercises will be individual, on some of them you will be able to work in small teams.

 

There will be also individual programming assignments that involve implementing algorithms learned in class. You will submit your programs via an online system (Gradescope) that will provide you with live feedback.


Assessment methods

  Continuous assessment Partial exams General exam
  • Written individual exam (traditional/online)
    x
  • Individual Works/ Assignment (report, exercise, presentation, project work etc.)
x    
  • Collaborative Works / Assignment (report, exercise, presentation, project work etc.)
x    

ATTENDING AND NOT ATTENDING STUDENTS

There will be no midterm, and the single final exam will not distinguish between attending and non-attending students. However, throughout the semester you will have opportunities to collect points for assignments and active participation, and some of those opportunities might be available only if you are present in class. Collecting points is not mandatory. Each point guaranteess one percent of the final grade and decreases the contribution of the final exam by one percent. For instance, if you collect 40 points during the semester, your final grade (on the scale from 0 to 100) will be calculated as 40 + 0.6 * [exam-result].

 

The exam and assignments will test your understanding of basic concepts presented in class, and your ability to apply those concepts to new problems, explain and implement proposed solutions, and analyse their correctness and efficiency.
 


Teaching materials


ATTENDING AND NOT ATTENDING STUDENTS

The main textbook for the course is:

 

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

 

It contains a very formal exposition of almost all the material we are going to cover during the course, and much much more. You are going to get references to relevant fragments in the 3rd edition, but if you happen to have access to any other edition, feel free to use it instead (and just keep in mind that chapters and sections may have different numbers).

 

Other textbooks – which cover many of these topics and present them in a different style that some of you may prefer – include:

 

– S. Dasgupta, C. H. Papadimitriou, U. V. Vazirani, Algorithms, McGraw-Hill, 2008.

– J. Erickson. Algorithms. 2019. URL: http://jeffe.cs.illinois.edu/teaching/algorithms/.

 

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

Last change 14/11/2024 17:12