# Informatics 1 syllabus Unix and programming fundamentals. 4 SWS, 5 ECTS, in degree program {abbr}`LSI (Life Science Informatics)` Master and {abbr}`ICS (International Computer Science)` ## Intended learning outcomes The purpose of the course is for you (the student) to learn to: (Part 1: Unix) - describe what fundamental Unix environment tools do - use Unix shell commands to carry out tasks like - inspecting, moving, copying, deleting files and folders - consulting documentation - applying a chain of data processing commands on an input data (piping) - implement shell scripts for automating tasks on a Unix system, e.g., file management and text processing - apply regular expressions on text to extract relevant information - understand the advantage of git, GitHub, cloud computing and carry out basic git and cloud computing tasks (Part 2: Python) - use the the following tools of programming to create applications: - expressions, conditionals, functions - loops - data structures like lists, dictionaries, sets - select the right data structure for a given data processing task (In general) - breakdown programs into various components, explain what these components do - make sense of typical programming error outputs and find a fix - classify a problem based on if the problem can be solved more efficiently with the Unix shell or Python - evaluate someone else's work and give constructive feedback (e.g, in context of peer-assessed exercises) ## Prerequisites - Computer science fundamentals (e.g., information, hardware, software, operating systems, shells, algorithms) ## Content (what we do to reach the learning outcomes) Part 1: The Unix workbench - Unix and command line basics - Working with Unix - Bash programming - Git & GitHub & cloud computing Part 2: Introduction to programming with Python (in context of interactive programming) - Statements, expressions, variables - Functions, logic, conditionals - Event-driven programming, local/global variables - Canvas, drawing, timers - Lists, keyboard input, the basics of modeling motion - Mouse input, list methods, dictionaries - Classes and object-oriented programming - Basic game physics, sprites - Sets and animation ## Didactic methods To reach the learning outcomes we will use the following didactic methods: - [Flipped classroom](https://en.wikipedia.org/wiki/Flipped_classroom) - Labs with feedback sessions - [Pair programming](https://en.wikipedia.org/wiki/Pair_programming) - Mini projects ## Grading Portfolio exam comprising: - written exam 1 hour (70 %) - 1x programming mini-project presentation (8 %) - 1x peer feedback to a peer about their mini-project (2%) - 2x midterm exams (2x 10 %) The examination is based on the intended learning outcomes. ### Midterm exam - The midterm exam typically takes place in the fourth week and towards to the end of the class. - You must be present in the class, unless you still could not arrive in Germany. In the latter case it is not guaranteed that your grade is officially recognized. - You can use up to 45 min for the exam. ### Mini-project presentation - You present a Python mini-project or Unix workbench-related project. The latter can be: - (1) the capstone project + two Bash programming exercises - (2) a Bash script with similar complexity and workload to (1) - If you intend to present in the next sessions, you post the project that you want to present on the course discussion board (e.g., Moodleoverflow). - The presentation takes about 10 to 15 min. ### Peer feedback - You give constructive feedback during a mini-project presentation. - If you intend to give feedback, you follow the same procedure as in mini-project presentation. ### Other details - Every week there will be up to three presentations. - I you do not volunteer for the mini-project presentation & peer feedback or are not present for the exams, it is not possible to get alternative grading. ## Workload breakdown [Semester schedule & workload breakdown](https://nextcloud.th-deg.de/s/pTcCefA6MZcqxyP) ## Materials - [The Unix workbench - Coursera](https://www.coursera.org/learn/unix) - accompanying lecture notes: [aydos.de/unix-workbench](https://aydos.de/unix-workbench) - [Interactive programming with Python 1 - Coursera](https://www.coursera.org/learn/interactive-python-1) and [part 2](https://www.coursera.org/learn/interactive-python-2) - accompanying lecture notes: [aydos.de/interactive-python](https://aydos.de/interactive-python) - Additional exercises - [Instructor versions](https://mygit.th-deg.de/lsi/nbgrader-notebooks/-/tree/main/inf1-exercises-source) - [Student versions](https://mygit.th-deg.de/lsi/nbgrader-notebooks/-/jobs/artifacts/main/browse/inf1-exercises-release?job=build) - Previous Exams - [Instructor versions](https://mygit.th-deg.de/lsi/nbgrader-notebooks/-/tree/main/inf1-exams-source) - [Student versions](https://mygit.th-deg.de/lsi/nbgrader-notebooks/-/jobs/artifacts/main/browse/inf1-exams-release?job=build) Additional: - [Joyner, Introduction to Computing, 2016, ISBN: 1-260-08227-X](http://www.davidjoyner.net/b/wp-content/uploads/2017/03/Joyner_IntroductiontoComputing_1stEdition.pdf) ## Time & Room This course takes place only in winter semester. For time and room refer to [Thabella LSI-1](https://thabella.th-deg.de/thabella/opn/pdf/page/LSI-1).