Software Development - Computational Thinking and Software Engineering

Readings and Resources:

Required Reading:

Lecture:

Exercise:

Rust Reference:

Additional Resources

Competitive Programming Deliverables

In each exercise we will attempt a challenging algorithmic problem from the CSES Problemset: https://cses.fi/problemset/

Use this template for Rust Code: https://github.com/dominikb1888/cses_template

You can also use https://github.com/csesfi/cses-cli/ to download the exercises and test cases.

Class Design - Flipped Classroom

The course is taught in a Flipped Classroom style. You are required to prepare coding exercises and will be asked to present them in front of class on a random selection basis.

Exam (graded)

The Exam will be an oral exam on-site counting 60% of your grade. The 10 deliverables count 40%. The exam will ask about a solution you submitted as part of the 10 deliverables. Access to the oral exam requires complete submission of all 10 deliverables.

Agenda

  1. Algorithms Analysis, Design and Evaluation (Chapter 2)
  2. Recursion
  3. Sequences
  4. Sets and Maps
  5. Trees
  6. Graphs
  7. Membership Structures
  8. Heaps
  9. Balanced Binary Search Trees
  10. B-Trees
  11. Heuristic Search

Deliverables

Prepare before Session Exercise Topic
2    
3 Increasing Array Dynamic Arrays
4 Two Sets Sets
5 Tower of Hanoi Recursion
6 Subordinates Trees
7 Counting Rooms Graphs
8 Finding Borders Membership Structures
9 Another Game Heaps
10 Free Choice Balanced Binary Search Trees
11 Free Choice B-Trees
12 Free Choice Heuristic Search

In total you have to submit 10 Deliverables during the semester. The deliverables will count 40% of your final grade. You can submit these via ilearn ().

Sessions

1. Algorithms & Data Structures: Computational Complexity and Real-world Performance

Lecture:

In-class Exercise:

Required Reading:

Optional Reading

2. Problem Solving Strategies: Recursion and others

Exercise Review:

Theory:

Interactive:

Problem Solving Strategies (https://link.springer.com/chapter/10.1007/978-3-031-61794-2_2, https://www.designgurus.io/blog/grokking-the-coding-interview-patterns ):

3. Sequences: Lists, Lists, and more Lists (and Smart Pointers)

Exercise Review:

Data Structures:

4. Sequences continued: The performance implications of Lists, Arrays, and Vectors

Exercise Review:

Interactive:

Algorithms for Sorting and Ordering:

Reading:

4. Sets and Maps:

Algorithms:

Data Structures:

Reading:

5. Trees

Data Structure:

Algorithms

6. Graphs

7. Membership Structures

8. Heaps

9. Balanced Binary Search Trees

10. B-Trees

12. Practice and Mock Exam

Further Reading