Skip to content

dominikb1888/SWEN

Repository files navigation

Software Development - Computation 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.

  • 30 min | Review and joint development of selected Homework Exercises
  • 60 min | Theoretical input on computational thinking and software engineering.
  • 90 min | Applying theoretical input in a hands-on

Exam (graded)

The Exam will be written (online). It will be a code exercise just like the ones you practice with tests provided. The exam itself will count 60% of your grade. The 10 deliverables count 40%.

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 Tower of Hanoi Recursion
3 Increasing Array Dynamic Arrays
4 Two Sets Sets
5
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 as part of your exam.

Sessions

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

Lecture:

  • Introduction to Data Structures: Simple Linked List

  • Introduction to the class, exam, and deliverables

  • Introduction to Estimating Algorithm Runtime

  • Measuring and profiling Algorithm Runtime

In-class Exercise:

Required Reading:

Optional Reading

2. Problem Solving Strategies: Recursion and others

Exercise Review:

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

Exercise Review:

Theory:

  • Rust Arrays and Vectors in Memory
  • Options, Results, and Smart Pointers in Rust

Interactive:

Data Structures:

  • Linked Lists: Improving on our Exercise
  • Doubly Linked Lists
  • Skip Lists
  • Dynamic Arrays (Vec):

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

Exercise Review:

Interactive:

  • Rust Memory Allocation, Cache Lines, Registers

Algorithms for Sorting and Ordering:

  • Bubble Sort
  • Merge Sort (Divide and Conquer)
  • Quicksort

Reading:

4. Sets and Maps:

Algorithms:

  • Hashing

Data Structures:

  • Maps
  • Sets

Reading:

5. Trees

Data Structure:

  • Heap
  • Binary Search Tree
  • Red-Black Tree
  • Trie
  • B-Tree

Algorithms

  • Heap Sort

6. Graphs

  • Graph Representation: Adjacency Matrix

7. Membership Structures

  • Bloom Filters

8. Heaps

9. Balanced Binary Search Trees

10. B-Trees

11. Heuristic Search

12. Practice and Mock Exam

Further Reading

About

Software Development: A Course in Algorithms and Data Structures Engineering

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors