Programming in C I, Fall 2017

Jacobs University Bremen, Fall 2017, Kinga Lipskoch and Xu He

Class sessions: Thursdays and Fridays 14:15 – 18:30, Seminar Room in Research V

Course description: This course offers an introduction to programming using the programming language C. After a short overview of the program development cycle (editing, preprocessing, compiling, linking, executing), the course presents the basics of C programming. It covers fundamental procedural programming components and constructs as well as simple algorithms in a hands-on manner. After learning the concepts of data types, variables, operators and basic data structures, programming constructs like branching, iterations, and data structures like multidimensional arrays, structures, and pointers are presented. The course also gives an introduction into recursive functions, file handling and dynamic memory allocation. Finally, it includes programming assignments, which can be solved during lab sessions under the supervision of teaching assistants. This is a lab course with a lecture part and a practical lab part.

References (optional but recommended, the online lecture slides suffice)

Brian W. Kernighan, Dennis M. Ritchie: The C Programming Language, Prentice Hall PTR, 2nd edition, 1988 

TAs: Alexandru Sasu and Leul Abiy Shiferaw

Grading: Assignments 35% + Final Exam 65%

Any programs which have to be written will be evaluated based on the following criteria:

  • correctness including proper handling of error conditions
  • proper use of programming language constructs
  • clarity of the program organization and design
  • readability of the source code and any output produced

TAs will grade your homework according to these grading criteria.

Final Exam:

Date: Saturday, 14th of October, 2017

Time: 10:00 - 12:00 (in the morning)

Location: Conference Hall, IRC

Sample Exam: practice_sheet

Schedule (course materials will be updated as we go along)

Date Topics Lecture Slides Assignment
2017-09-14 Introduction, Variables, Assignments, Using printf Lecture_12    Assignment_1
2017-09-15 Pointers, Array, Reading from the keyboard      Assignment_2
2017-09-21 Casting, Booleans, Branching and looping instructions, Arrays Lecture_34    Assignment_3
2017-09-22 Functions, Scope, Parameters by value and reference, String functions      Assignment_4
2017-09-28 Arrays, Functions, Dynamic memory allocation, Multi-dimensional arrays Lecture_56    Assignment_5
2017-09-29 Recursive functions, Handling files Practice_sheet    Assignment_6