Fundamentals of Computer Science
This module covers the basics of computer science and introduces the students from domain sciences to programming.
Basic Concepts
- Introduction to computer science, basic concepts of operating systems using UNIX/Linux as an example
- From problem to algorithm: concept of an algorithm, design of algorithms, pseudocode, refinement, brute-force algorithms, models and modeling, graphs and their representation, simple algorithms on graphs, analysis of algorithms (correctness, termination, runtime)
- Implementation of algorithms (e.g., using Python)
- Programming paradigms: procedural, object-oriented, and functional programming; recursion versus iteration
- From program to process: assembly languages, assembler, compiler, interpreter, syntax and semantics of programming languages
- Limits of algorithms: computability, decidability, undecidability
Lecture: Fundamentals of Computer Science
SWS: 2 ECTS: 2
Exercise: Fundamentals of Computer Science Exercise
SWS: 2 ECTS: 4
Module Competences
| ID | Description | Disciplines | Prerequisites | Evidence | Author | Source |
|---|---|---|---|---|---|---|
| ex_programming_mod1_1 | Use an imperative-procedural programming language (e.g., C) and an object-oriented language (e.g., Java) with confidence | Computer Science | Submit working programs in both languages demonstrating syntax and language-specific features | University of Potsdam | Link | |
| ex_programming_mod1_2 | Implement basic data structures and algorithms | Computer Science | ex_programming_mod1_1 | Submit a project with implemented algorithms and data structures (e.g., lists, trees, sorting) | University of Potsdam | Link |
| ex_programming_mod1_3 | Distinguish between error types and handle them appropriately in code | Computer Science | ex_programming_mod1_1 | Demonstrate error handling techniques in submitted code (e.g., input validation, error codes, exceptions) | University of Potsdam | Link |
| ex_programming_mod1_4 | Identify and use appropriate library functions in programming tasks | Computer Science | ex_programming_mod1_1 | Integrate external libraries in coding tasks and document their usage | University of Potsdam | Link |
| ex_programming_mod1_5 | Use basic functions and mechanisms of operating systems using UNIX/Linux as an example | Computer Science | Demonstrate file handling, permissions, and process control using UNIX/Linux commands | University of Potsdam | Link | |
| ex_programming_mod1_6 | Create and refine simple algorithms using semi-formal notation | Computer Science | Submit pseudocode or flowcharts for given algorithmic problems | University of Potsdam | Link | |
| ex_programming_mod1_7 | Evaluate and compare algorithms using runtime analysis | Computer Science | ex_programming_mod1_6 | Provide time complexity comparisons for multiple algorithmic solutions | University of Potsdam | Link |
| ex_programming_mod1_8 | Implement simple algorithms using imperative and functional programming styles (e.g., in Python) | Computer Science | ex_programming_mod1_6 | Submit code demonstrating both imperative and functional styles for the same problem | University of Potsdam | Link |
| ex_programming_mod1_9 | Distinguish between programming paradigms and identify their characteristics | Computer Science | ex_programming_mod1_1 | Classify given code snippets by paradigm and justify the classification | University of Potsdam | Link |
| C10 | Express simple programs in an assembly language | Computer Science | Translate simple high-level logic into assembler code | University of Potsdam | Link | |
| C11 | Discuss the limits of algorithms, including computability and decidability | Computer Science | Write a short essay or present on concepts such as the Halting Problem or undecidability | University of Potsdam | Link |