Programmieren I

Summary

Term
Winter 2015
ECTS
5 (course catalog: lecture, exercise)
Level
Bachelor
Instructors
Michael Rohs, Henning Pohl, Beren Kaul
Lecture Time
Di. 20:00-21:30 (ab 20.10.)
Lecture Room
Gebäude 1507 (Hörsaalgebäude), Raum VII 201, Königsworther Platz 1
Exercise Time
Di. 21:30-22:15 (ab 20.10.)
Exercise Room
Gebäude 1507 (Hörsaalgebäude), Raum VII 201, Königsworther Platz 1

Course Description

receipe

Diese Vorlesung führt in das strukturierte Programmieren in C und Java ein. Programmieren bedeutet, ein Problem so präzise zu beschreiben, dass ein Computer es lösen kann. Dabei spielen Eigenschaften, wie Korrektheit, Effizienz und Wartbarkeit eine zentrale Rolle. Die Teilnehmer lernen fundamentale Konzepte von Programmiersprachen kennen (z.B. Rekursion, einfache Datenstrukturen, Datenabstraktion und Vererbung) sowie Methoden, um über die Korrektheit und Effizienz eines Programms systematisch nachzudenken. Neben dem Methodenwissen erfordert das Lösen von Programmierproblemen auch Kreativität und Erfahrung. In den Übungen werden praktische Programmierfertigkeiten erarbeitet und algorithmisches Denken geschult. Dazu gehört z.B., wie man für eine gegebene Aufgabe einen Algorithmus formuliert, wie man geeignete Datenstrukturen dafür auswählt, wie man komplexe Aufgaben systematisch in kleinere Teilaufgaben zerlegt. Als Basis für die Anschlussvorlesung Programmieren II werden die Grundzüge der Objektorientierung behandelt.

Course Objectives

  • grundlegende Programmierkonzepte und Methoden kennen und verstanden haben
  • algorithmisches Denken, Abstraktionsvermögen
  • Programmierkompetenz und -fertigkeiten
  • Fähigkeit des systematischen Entwurfs von einfachen Programmen
  • Fähigkeit des Strukturierens von einfachen Programmierproblemen

Lecture Calendar

Date
Topic
20.10.
Organization, computers, programming, algorithms
27.10.
Recipe for atomic data, Programming I library, data types, expressions, C language (typedef, function declaration/definition, if)
3.11.
Recipe for enumerations, recipe for intervals, C language (enum, if, switch, variable declarations)
10.11.
Recipe for itemizations, C language (enum, struct, floating point data)
17.11.
Recipe for compound data, recipe for variant data, C language (struct, union, enum)
24.11.
Recipe for loops, C language (while, for), recursion, repetition through recursion
1.12.
Arrays: fixed-size collections, option types, C language (C arrays)
8.12.
Lists: arbitrary-size collections, C language (pointers, dynamic memory)
15.12.
Function pointers, higher-order functions, Makefiles
22.12.
Java program structure, control structures, methods
12.1.
Java arrays, characters, and strings
19.1.
Object orientation
26.1.
Dynamic data structures
2.2.
Inheritance

Materials

  • Script on Design Recipes in C
  • Hanspeter Mössenböck: Sprechen Sie Java?: Eine Einführung in das systematische Programmieren. dpunkt.verlag, 5. Auflage, 2014.
  • Brian Kernighan and Dennis Ritchie: The C Programming Language. Prentice Hall, second edition, 1988.

Slides, assignments and other materials are available via Stud.IP