Skip to content
 
 

Repository files navigation

Software Engineering - From REPL to SYSTEM

Readings and Resources:

Agenda

  • 20-30min | Brief theoretical input on basic topics of automation and computation.
  • 60-90min | Practical Exercises and Coding Examples with Python
  • 60-90min | Review and joint development of selected Homework Exercises

Deliverables (ungraded)

For each session there are a set of exercises listed here on GitHub Classroom: https://classroom.github.com/classrooms/98897122-22s_swen

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.

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:

Exercises:

Name Link Concepts
Hello World https://classroom.github.com/a/QE3x_hhh Functions, Tests, Return vs. Print, Strings
Leap https://classroom.github.com/a/kuewOJNA Expressions, Operators, Modulo
Gigasecond https://classroom.github.com/a/G-YyPO-w Data Types, Dates, Imports, Modules
Grains https://classroom.github.com/a/e5YuqVvX Conditions, Errors
Pangram https://classroom.github.com/a/PgiCkqlQ Strings, Lists, Slicing, Iteration
TwoFer https://classroom.github.com/a/M1h508Bg Functions, Parameters, Strings
Collatz Conjecture https://classroom.github.com/a/zHuZThq7 Conditions, Parameters, Recursion
Bob https://classroom.github.com/a/pyRnT4ov Conditions, Iteration, Strings
Resistor Color https://classroom.github.com/a/11vEzBif Lists, Functions
Resistor Color Duo https://classroom.github.com/a/4Fk0J8hv Dicts, Functions
Darts https://classroom.github.com/a/me07QrYB Math Module, Conditionals
Difference of Squares https://classroom.github.com/a/KARXRhL6 Variables, Iteration

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

Exercises

Name Link Concepts
Queen Attack https://classroom.github.com/a/U-O8V5DV Classes, Conditionals
Triangle https://classroom.github.com/a/rdHFbhiB Functions, Conditionals
Perfect Numbers https://classroom.github.icom/a/fGsmSeXs Iterators, Conditionals
Sublist https://classroom.github.com/a/z4yFStmT Lists, Conditionals
Diamond https://classroom.github.com/a/UGcxRUbr Strings, Iterators
Yacht https://classroom.github.com/a/5GlYdenA Lambda Functions, Iterators
Pythagorean Triplet https://classroom.github.com/a/G_CL1Lr4 Lists, Sets, Iterators
Matching Brackets https://classroom.github.com/a/BLWxgkfH Dictionaries, Lists, Conditionals
Binary Search https://classroom.github.com/a/Qfsy57Cy Lists, Iterators, Conditionals
Reverse String https://classroom.github.com/a/wa6DDPgu Strings, Slicing, Iterators
ISBN Verifier https://classroom.github.com/a/4Mwb_puU Lists, Conditionals
RNA Transcription https://classroom.github.com/a/81EFBPgA Dicts, Iterators
Pig Latin https://classroom.github.com/a/VO0GPmXX Strings, Conditionals, Regular Expressions

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!

Exercises

Name Link Concepts
Phone Number https://classroom.github.com/a/As4MXk8j Regular Expressions, Classes
Armstrong Numbers https://classroom.github.com/a/rMEa0uqh Strings, Iterators
Nth Prime https://classroom.github.com/a/dso1cD_f Recursion, Iterators
Sum of Multiples https://classroom.github.com/a/w5anpxRN Lists, Iterators
Prime Factors https://classroom.github.com/a/Up7m9GmN Lists, Loops
Beer Song https://classroom.github.com/a/tQtc3fxZ Strings, Iterators
Flatten Array https://classroom.github.com/a/zruPbNUB Recursion, Lists
Atbash Cipher https://classroom.github.com/a/2Y9uwrgE String Functions, Iterators
Series https://classroom.github.com/a/wstQKvY- List Comprehensions, Errors
Anagram https://classroom.github.com/a/CZcHVogi Sets, Comprehensions
List Ops https://classroom.github.com/a/XAPY-tFV Classes, Iterators
House https://classroom.github.com/a/egtY89S3 Strings, Iterators

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

Exercises

Name Link Concepts
ETL https://classroom.github.com/a/PbrZHoa1 Dicts , Lists
Say https://classroom.github.com/a/dv5TztF3 Dicts, Conditionals
Wordy https://classroom.github.com/a/0N1ssUPj Strings
Crypto Square https://classroom.github.com/a/Uj488ZBp Dicts, Lists
Hamming https://classroom.github.com/a/vMYh38UB Iterators, Zip
Matrix https://classroom.github.com/a/lS9GqBIk Lists, Classes
Minesweeper https://classroom.github.com/a/7yY2u8MX Lists, Loops
Palindrome Products https://classroom.github.com/a/ind2ZEm5 Iterables
Raindrops https://classroom.github.com/a/5ddtdK4T Conditions, Operators
Robot Name https://classroom.github.com/a/FGvjUOo0 Classes

5 - Clean Code

Theory: Clean Code - Principles

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

Exercises

Name Link Concepts
Robot Simulator https://classroom.github.com/a/JMHD5_cM Classes, Conditionals
Roman Numerals https://classroom.github.com/a/4aeJ-SpP Dicts, Strings
Rotational Cipher https://classroom.github.com/a/WsELdq_X Dicsts, Strings
Run Length Encoding https://classroom.github.com/a/0lfy8sKi Strings, Iterators
Secret Handshake https://classroom.github.com/a/Vgii-N0T Strings, Dicts, Lists
Sieve https://classroom.github.com/a/Xx9V7KM8 Iteration, Recursion, Lists
Space Age https://classroom.github.com/a/BZ-C-SFt Dicts, Conditionals
Spiral Matrix https://classroom.github.com/a/gNtRaG6P Lists, Iterators
Transpose https://classroom.github.com/a/5Vvhv9I- Lists, Iterators

6 - Understanding Data Bindings: OOP and FP

  • Theory: Functions, data, classes and objects

  • Practice: OOP, Decorators, and Classes - Chapter 6, pp.195-238

Additional Material:

Exercises

  • No new exercises: Session 6 is about review and learning
  • General Rule: If you have not finished all exercises until here, do not move on

7 - Error Handling, Exceptions and Context

Exercises

Name Link Concepts
Meetup https://classroom.github.com/a/ZVmT7TFR Dates, Strings
DND Character https://classroom.github.com/a/2QHYGZzT Classes
Simple Linked List https://classroom.github.com/a/YHa3LBFc Classes, Inheritance
Scale Generator https://classroom.github.com/a/gwwxD5KE Classes, Lists
Go Counting https://classroom.github.com/a/T_kSEjG_ Classes, Lists
Luhn https://classroom.github.com/a/XWgFqngQ Classes, Lists
Clock https://classroom.github.com/a/ua06kC9j Classes, Operators
Complex Numbers https://classroom.github.com/a/oPzuHi3O Classes, Types
Allergies https://classroom.github.com/a/3e79_FLf Classes, Methods
Linked List https://classroom.github.com/a/AAndjmVk Classes, Types
Kindergarden Garden https://classroom.github.com/a/UMPiz8JF Classes, Lists
Connect https://classroom.github.com/a/jV1_9Jq- Classes, Lists
Simple Cipher https://classroom.github.com/a/W2eldnq4 Classes, Lists, Strings
Tree Building https://classroom.github.com/a/47FcKJJg Classes, Refactoring
Grade School https://classroom.github.com/a/nxpDHeOb Classes, Dicts
Circular Buffer https://classroom.github.com/a/bLhDCPth Classes, Lists

8 - Operating Systems

Theory: Operating System | Chapter 4, pp.81-131

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

Exercises

Name Link Concepts
Grep https://classroom.github.com/a/1B5k4Ljk Strings, Conditionals
Poker https://classroom.github.com/a/QBTNqyzN Lists, Conditionals
Rectangles https://classroom.github.com/a/My-4vGWK Strings, Conditionals
Change https://classroom.github.com/a/SVzB4aSf Lists, Operators
All you Base https://classroom.github.com/a/F07CcQ-V Strings, Operators
Diffie Hellmann https://classroom.github.com/a/vgoua32a Strings, Operators
Variable Length Quantity https://classroom.github.com/a/6-Vm48Vz Strings, Iterators
Largest Series Product https://classroom.github.com/a/LaWBE0O1 Strings, Lists
OCR Numbers https://classroom.github.com/a/8cSuuyjH Lists, Strings
Rail Fence Cipher https://classroom.github.com/a/Haf6fEK7 Lists, Strings
Food Chain https://classroom.github.com/a/5stIayM0 Lists, Strings
Saddle Points https://classroom.github.com/a/URCOzhRu Lists, Operators
Protein Translation https://classroom.github.com/a/98Y3ahJt Dicts, Strings
Acronyms https://classroom.github.com/a/kmoDtGXs Lists, Strings
Scrabble Score https://classroom.github.com/a/9wjkk4nm Dicts, Strings
Markdown https://classroom.github.com/a/xYZ2smmz Strings, Refactoring
Isogram https://classroom.github.com/a/WFY2VBbR Strings, Lists
Word Count https://classroom.github.com/a/XeEgAL9u Strings, Dicts, Standard Libary

9 - Mid-Term Exercise Review and Q&A

Theory: NONE

Practice: Collective Session on current issues and status of learning

Affine Cipher

Name Link Concepts
Affine Cipher https://classroom.github.com/a/qtF3ZV1Q Dicts, Operators
Binary Search Tree https://classroom.github.com/a/zhxZ6MGT Lists, Iterators
Book Store https://classroom.github.com/a/ToE9iBe- Lists, Conditionals
Bowling https://classroom.github.com/a/sg2IhPsu Classes, Lists
Custom Set https://classroom.github.com/a/86Bb4cRN Classes, Types
Dot DSL https://classroom.github.com/a/VuuvAqLk Classes, DSL
Forth https://classroom.github.com/a/aLYPkLO6 Classes, DSL
Hangman https://classroom.github.com/a/piYnn9_t Classes, Functional, Reactive
Knapsack https://classroom.github.com/a/rkdlM9tA Dicts, Optimization

10 - Testing

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

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

Exercises

Name Link Concepts
Ledger https://classroom.github.com/a/11ilq10y Classes, Refactoring
Rational Number https://classroom.github.com/a/5U8y8MoW Classes, Types
Tournament https://classroom.github.com/a/oIbJmPJ0 Strings, Lists
Twelve Days https://classroom.github.com/a/LI82B47v Strings, Lists
Two Bucket https://classroom.github.com/a/Vhom64p3 Lists, Tuples
Zebra Puzzle https://classroom.github.com/a/394FVhTX Logic Programming
Alphametics https://classroom.github.com/a/LJ2EEsvl Lists, Strgins
React https://classroom.github.com/a/pbhxmweN Reactie Programming

11 - Debugging and Profiling

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

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

https://martinheinz.dev/blog/64 https://jakevdp.github.io/PythonDataScienceHandbook/01.07-timing-and-profiling.html https://stackoverflow.com/questions/17579357/time-time-vs-timeit-timeit

Exercises

Name Link Concepts
Word Search https://classroom.github.com/a/6hGB29yN Strings, Lists
Zipper https://classroom.github.com/a/F1eYUE08 Lists, Types
Dominoes https://classroom.github.com/a/gEGEQ8nf Lists, Types

12 - Computer Networks: Servers and Clients

Theory: Computer Networks | Chapter 6

Python requests and requests-cache: https://realpython.com/caching-external-api-requests/

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

Name Link Concepts
Paasio https://classroom.github.com/a/qV_-bbej Classes, Advanced OOP
Satellite https://classroom.github.com/a/IykIH0zj Types
SGF Parsing https://classroom.github.com/a/9RRaNc3b Classes, Advanced OOP

13 - Computer Networks: Data Exchange

Theory: NONE

Practice: Data Science in Brief | Chapter 13

  • Extending our Leaderboard example through a Heatmap visualization
Name Link Concepts
Bank Account https://classroom.github.com/a/fZkHIkaC Classes, OOP

14 - Computer Networks: Authentication and APIs

Theory: Computer Security and Cloud Computing Chapters 7 and 8, 195-240

https://realpython.com/api-integration-in-python https://betterprogramming.pub/asynchronous-programming-in-python-for-making-more-api-calls-faster-419a1d2ee058

Practice: API Development | Chapter 14, pp. 425-476

  • Creating a small REST-API for our Leaderboard example

Exercises

Name Link Concepts
POV https://classroom.github.com/a/I0zehVXW Lists, Graphs

15 - Final Exercise Review and Prep

Theory: NONE

Practice: Collective Session on current issues and status of learning

Exercises

Name Link Concepts
REST API https://classroom.github.com/a/MUlbLlIx Classes, Rest APIs

Additional Material

Advanced Python: https://ebookcentral.proquest.com/lib/th-deggendorf/reader.action?docID=5353672 Data Science: https://ebookcentral.proquest.com/lib/th-deggendorf/reader.action?docID=6739165

A - Computer Security

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

B - Cloud Computing

C - Machine Learning

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