Master's Lecture: Advanced Programming and Algorithms
Welcome! This course is the first of two parts about algorithm design and programming. It provides an insight into algorithmic and programming tools, combining theoretical and practical methods that build a foundation for further courses in the Master of Articficial Intelligence and Data Science programme.
News
This year's first lecture takes place on Monday, 9th October, 2023, 12:30 pm in lecture hall 25.21.HS.5E with organisatorial information, and Q&A.
The exercise groups start on 23rd October.
The second part will take place in Summer 2024. An exam about both parts will be written at the end of the summer term.
Please register via HIS-LSF.
Material
Lecture and exercise material will be provided via ILIAS.
Teaching
Dr. Anja Rey
Study Programme
Master AI and Data Science
Credits
10 CP for both parts (winter and summer semester ans exam)
Course
- lecture
- Mon 12:30 pm - 2:00 Uhr in 25.21 HS.5E
- exercise groups
- Mon 2:30 pm - 4:00 pm in 25.13.U1.23
- Thu 2:30 pm in 25.13.U1.22
- or Fri 2:30 pm - 4:00 pm via webex
- self study: quizzes for self-assessment, weekly exercises (combination of theoty and programming), preperation and post-processing,
- ask questions, learn with others
Course structure
There are various ways to reach the learning goals and to cover all topics. Some of you might just start their programming journey, some might already have studied some algorithmic topics or have already programming experience. It is your task to find out, what you already know, and what you want to study in more depth in order to reach the common goals of this course.
- A good starting point are the quizzes in ILIAS that can help you to assess your current knowledge.
- Based on that you can decide to go to the topic-specific lectures. These will take place on campus and contain mostly theoretical input and time for questions and answers.
- You can use the slides and notes, weekly exercise sheets, jupyter notebooks, and other material to study further.
- In order to get feedback on your written answers to an exercise, you can hand in the solution to one problem per week.
- You can choose a weekly exercise group (on-site or online) where you can dicuss exercises and work with others.
- The programming exercises are mostly for your self-study. There will be a mini-project later in the semester with a small programming task and the opportunity to follow a workflow via gitlab with peer-reviews.
- There are many opportunities and channels to ask questions. Please do so!
Passing the course
The module Advanced Programming and Algorithms consists of two parts. This is Part I.
In order to pass this part it is required to:
• take part in the quizzes (click on "finish the test", no minimum score required)
• solve and pass at least 6 of the 12 hand-in problems;
• and take part the mini project in the middle of the semester: details tba.
Learning results & Competences
After completing the first part the students can
- reproduce algorithmic and programming principles, and explain technical terms and basic methods,
- describe known algorithms and new algorithms based on pseudocode and Python code and apply them exemplarily to adequate problem settings,
- implement algorithms in Python and apply selected software engineering tools,
- distinguish between data structures (theoretically and in Python) and apply them in adequate contexts,
- interpret and visualise different types of data,
- analyse algorithms (e.g., compute and classify their running time) and prove their correctness,
- test their code and apply test driven development,
- evaluate code and apply refactoring techniques in order to improve code quality,
- operate a version control system and develop in groups,
- evaluate the quality of a given piece of code and provide reviews for improvement,
- create reproducible environments and build data science workflows, and
- design and develop algorithms based on known methods.
Content
This course consists of two parts about algorithm design and programming. It provides an insight into algorithmic and programming tools, combining theoretical and practical methods that build a foundation for further courses in the Master of Articficial Intelligence and Data Science programme.
Winter term:
- Algorithmic foundations and data structures
- Introduction to the Python programming language
- Algorithm analysis (running time analysis, correctness proofs)
- Software engineering methods for code quality (software testing, code review, refactoring)
- Version control systems (e.g., git) and continuous integration
- Classic algorithms (e.g., sorting algorithms, graph algorithms) and data streams
- Selected packages (e.g., numpy, matplotlib, pandas)
- Data science workflows (e.g. snakemake), reproducible environments (e.g. docker)
Prerequisites for attending
Formal: Admission to master studies in „Artificial Intelligence and Data Science“.
Contentual: none