Skip to content
 
 

Repository files navigation

Software Engineering - From REPL to SYSTEM

Readings and Resources:

CLASS CONTENT:

EXERCISES:

BASELINE (expected knowledge): - Essential Computer Science:

Agenda

  • 60-90min | Review and joint development of selected Homework Exercises
  • 20-30min | Brief theoretical input on computational thinking with Algorithms and Data Structures.
  • 60-90min | Practical Exercises and Coding Examples with Python

Deliverables (ungraded)

Each session below comes with a set of exercises. We will do the first batch of exercises for Session 1 together. From Session 2 onwards you are encouraged to prepare all exercises associated to a certain session. I will provide feedback and guidance on the side. For each session, I will pick some difficult or important exercises and discuss solutions with the class. The exercises are plenty and you will hardly be able to complete all of them. Make sure to definitely work on all Exercises from Session 1 and 2.

Exam (graded)

The Exam will be written and online. It will ask about theory and require you to work on several coding exercise.

Sessions

1 - The Urge to Compute and Automate

Theory: How do we compute and automate and why?

  • What would you like to automate?

  • What do you think about DAOs?

    The ideal of a decentralized autonomous organization is easy to describe: it is an entity that lives on the internet and exists autonomously, but also heavily relies on hiring individuals to perform certain tasks that the automaton itself cannot do.

    • Vitalik Buterin, Ethereum Foundation

Further Reading:

Practice:

2 - The Shoulders of Turtles

Theory: What are the layers of abstraction by creating different Versions of Hello World in Assembler, C, Python | Chapter 1, p. 1-28, Chapter 2, p.29-38

Building Blocks/Layers of Programming Languages:

Further Reading:

Practice:

Python Built-in Data Types | Chapter 2, pp. 37-82

3 - Basic Elements of Programming Languages

Theory: Algorithm and Data Structure | Chapter 3, pp. 53-81

Understand your Algorithms: https://www.bigocheatsheet.com/

Practice: Conditionals and Iteration | Chapter 3, pp. 83-114

  • Problem-solving with Data Structures and Algorithms
  • Choosing the right data structure is key
  • Solve problems iteratively:
    1. Understand the Problem at Hand (Read Excercise Description carefully)
    2. Build a model (Paraphrase in your own words, Visualize, Translate into "Python")
    3. Validate the model (Look at test cases, especially at input and output data types)
    4. Get a quick win (Solve the problem as concrete as possible or only partially first, e.g. by copying test case)
    5. Test, Fail, and Repeat towards higher abstraction (Try to find more abstract approaches (variables, conditions, iterations) for parts of your code)
    6. Clean your code (Once all tests pass, challenge the current state of your Code and avoid repetitive patterns (DRY Principle))
    7. Celebrate!

4 - Programming Paradigms and Functional Programming

Theory: Programming Paradigms | Chapter 3, pp.38-51

Practice: Functions, the Building Blocks of Code Chapter 4, pp. 115-156

5 - Clean Code

Theory: Clean Code - Principles

Practice: Comprehensions and Generators | Chapter 5, pp. 157-194

6 - Understanding Data Bindings: OOP and FP

Additional Material:

7 - Error Handling, Exceptions and Context

8 - Operating Systems

Theory: Operating System (2/2) | Chapter 4, pp.81-131

Practice: Files and Data Persistence | Chapter 8, pp. 257-294

9 - Mid-Term Exercise Review and Q&A

Theory: NONE

Practice: Collective Session on current issues and status of learning

10 - Testing

Theory: Software Development Lifecycle | Chapter A, 241-247

Practice: Testing | Chapter 10, pp.315-342

11 - Debugging and Profiling

Theory: Software Engineering Practices | Chapter B, pp. 249-267

Practice: Debugging and Profiling | Chapter 11, pp. 343-364

12 - Computer Networks: Servers and Clients

Theory: Computer Networks | Chapter 6

Practice: GUIs and Scripting | Chapter 12, pp. 365-392

13 - Computer Networks: Data Exchange

Theory: Computer Security | Chapter 6, pp.165-194

Practice: Cryptography and Tokes | Chapter 9, pp. 295-314

14 - Computer Networks: Authentication and APIs

Theory: Cloud Computing Chapter 7, 195-240

15 - Final Exercise Review and Prep

Theory: NONE

Practice: Collective Session on current issues and status of learning

Additional Material

Advanced Python: https://ebookcentral.proquest.com/lib/th-deggendorf/reader.action?docID=5353672 Computational Thinking, Data Structures, and Algorithms: https://link.springer.com/book/10.1007/978-1-4842-7077-6

About

Software Development: A Course in Algorithms and Data Structures Engineering

Resources

Stars

22 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages