Computer programming - fall of 2019

Lectures

S.L. dr. ing. Alexandru IOVANOVICI

Wednesday: 12-14, room A109, From Week 1 to Week7

Thursday: 10-12, room A117, From Week 1 to Week14

Labs

S.L. dr. ing. Alexandru IOVANOVICI, ing. Raul STOIN, ing. Andrei Ardelean

Schedule according to the official one.

You have to attend all the labs and obtain a passing grade for all the required and graded activities in order to pass the laboratory part of the subject.

Lab standings can be found here.

Office hours

Thursdys, 10-12, B520

Additional slots can be provided on request

Resources

  • Syllabus
  • Last year's course page is here.
  • Example Exam (for illustrative purposes and as a frame of reference). Those who consider themselves proficient in programming should try and solve this and later discuss with us the results.
  • VM image.
  • Midterm subjects (2018).
  • Final exam, 1st att empt PbBytes; 2nd attempt (all for 2018).
  • Midterm Problem 1 commented solution (solved for uint32_t). Sample solutions provided by Andrei Ardelean.
  • Audio recordings of the lectures.

You might be interested in the following ones too:

  • Richard M. Reese, Understanding and Using C Pointers, 2013
  • Kochan, Stephen G. Programming in C. Sams Publishing, 2004.
  • Press, William H. Numerical recipes 3rd edition: The art of scientific computing. Cambridge university press, 2007.
  • Coursera online course: Programming Languages; Not using C, but interesting if you have curiosities in "many of the concepts that underlie all programming languages"
  • Khan Academy online.
  • What can C++ do for embedded systems developers? - Bjarne Stroustrup
  • The Developement of the C programming language - Dennis Ritchie
  • A set of video lectures about the maths and programming behind autonomous driving.
  • Quora question about Linus Torvalds, C vs C++, Java, ...

Lecture slides and supplementary material

  • Lecture 1: Introduction to programming. Basic program structure.
  • Lecture 2: Conditional execution of the programs. Operators.
  • Lecture 3: Character type. Basic I/O. Loops 3
  • Lecture 4: Iteration. Side-effects. Break, continue, goto
  • Lecture 5: Internal representation of data. Bitwise operations.
  • Lecture 6: Recursion.
  • Lecture 7: Pointers.
  • Lecture 8: Arrays.
  • Lecture 9: Strings.
  • Lecture 10: Custom data types. Structures.
  • Lecture 11: Input and Output
  • Lecture 12: File I/O. Preprocessor
  • Lecture 13: Dynamic memory allocation.
  • Lecture 14: Buffer

Lab Assignments

  • Week 1: Introduction. Basics of the language. Conditional execution of the programs.
  • Week 2: Character based I/O. Conditions. Loops1
  • Week 3: Basic input processing. Loops 2
  • Week 4: Internal representation. Bitwise operations (1). Prob 3., Prob 4.
  • Week 5: Internal representation. Bitwise operations (2)
  • Week 6: Recursion. Prob 6. Prob 5.
  • Week 7: Arrays
  • Week 8: Strings (character arrays)
  • Week 9: Input and output
  • Week 10: Pointers
  • Week 11: Dynamic allocation
  • Week 12: Files
  • Week 13: Preprocessor. Modular compilation
  • Week 14: Structures

Exams