Instructor: Márton Karsai and Gergely Ódor

Prerequisite: None

Term: Pre-term course (during two weeks before Fall term)

Level: MS

Course type: Elective 

Module: Bootcamp

Brief course description: This course aims to introduce the basic concepts in computer science to students, who join the Social Data Science program without sufficient background. This course will introduce mathematical modeling of computational problems, as well as common algorithms, algorithmic paradigms, and data structures used to solve these problems. It emphasizes the relationship between algorithms and programming and introduces basic performance measures and analysis techniques for these problems. The course is organized as a sequence of short lectures and tutorials.

Learning outcomes: By the end of the course the student will be able to

approach programming challenges with the basic algorithmic techniques

design effective algorithms for various computational problem

identify the appropriate data structure for the optimal implementation of a computational problem

evaluate the computational performance of the implemented algorithmic solution

What you will NOT learn in this course : This course is about the data structures and algorithms. It will not provide you advanced coding and data visualization skills, neither training on data handling and database management.

Learning activities and teaching methods: Lectures and tutorials.

Assessment: A students in this course will be evaluated as pass/fail through their performance and homework. Regular class attendance is required to pass the course. Active class participation is highly recommended.

Attendance: Attendance is mandatory for at least 70 percent of the lectures. Absence from more than 30 percent of the classes automatically leads to failure. In case on-site teaching is allowed, online participation does not count as attendance unless officially certified.

Assignments: In the end of tutorial sessions homework will be handed out. 

Course reading: 

The lectures are built on topics discussed in: Cormen, Thomas, Charles Leiserson, Ronald Rivest, and Clifford Stein. Introduction to Algorithms. 3rd ed. MIT Press, 2009. ISBN: 9780262033848.

Software: Jupyter Notebook in the environment of Anaconda, freely downloadable here (download the version, which contains Python 3.9) and PyCharm (Community edition) is an integrated development environment (IDE) for programming, also available within Anaconda.

Literature: Open book: Non-Programmer's Tutorial for Python

Youtube playlist Python for Beginners

 Course topics:

Lecture 1: Introduction to Algorithms and Computing, Recursion

Tutorial 1: Basics of programming, control flow

Lecture 2: Program efficiency

Tutorial 2: Functions, local & global variables

Lecture 3: Searching and sorting

Tutorial 3: Strings, tuples, loops

Lecture 4: Introduction to data structures, sets & hashing

Tutorial 4: Modules and lists

Lecture 5: Linear sorting, heaps

Tutorial 5: Dictionaries and sets

Lecture 6: Binary trees, elementary graph algorithms

Tutorial 6: Object oriented programming

 

Schedule:

 

Mon 11.09.2023

Tue 12.09.2023

Wed 13.09.2023

Thu 14.09.2023

Fri 15.09.2023

8:50-10:30

Info L4

10:50-12:30

Info T4

13:30-15:10

Info L1

Info L2

Info L3

Info L5

Info L6

15:40-17:20

Info T1

Info T2

Info T3

Info T5

Info T6