Computer programming

Instructor: Marius Minea, marius@cs.upt.ro (Office: B531. Phone: +40-256-403284)
Laboratory: dr. Alexandru Iovanovici, Nashwan Azhari, Raluca Groșan
Course: A109, Mon 12-14 (week 2 + odd weeks); Tue 10-12
Lab: B418a+b/B426/B614, Thu 8-12; Fri 8-12 (even weeks)
Lab standings
Office hours: Wed 16h, B418b; Thu 12h, B418b; Fri odd weeks 10h, B418

Sample midterm solutions: sum of products, product of sums, rotate and swap, swap and rotate, increasing chars, split at uppercase

Course materials

An excellent pledge on how to be a student in a course (CS @ U. of Virginia)

last year's course

  1. Introduction
    Sample program: use of conditional
  2. Recursion
    Sample programs: box fractal, different variants for sum of series
  3. Characters. Assignment. Iteration
    Sample programs: prefix expression, filtering HTML text
  4. Iteration. Side effects
    Sample program: prefix to postfix expression
  5. Number representation. Bitwise operators
    Sample programs: bitwise add, reverse hex digits, playing with bitmaps, split float
  6. Arrays
  7. Input/Output
    Sample programs: ints line by line, simple string search, URL search
  8. Review: counting change, n choose k, replace chars, balanced parantheses, adding floats. Also see this summary
  9. Pointers
    Sample programs: numbers from string, sort string array
  10. Dynamic allocation
    Sample programs: read whole text, with limited lines; generic array minimum
  11. File I/O
    Sample programs: check segment lengths in PDF files: v.1 v.2, bitmap size, stream bits
    continued from class: hide a file in a BMP image and extract it
  12. Structures
    Sample programs: float with bitfields, function term
  13. Modular compilation. Abstract datatypes. Integer lists: intlist.h, intlist.c
    more list functions, header file, sample program. work with linked lists
    queues: header, implementation, test program
  14. Hashing. Timing. Randomization. Hashtable: header, implementation, test program

Laboratory

  1. Lab 1: Introduction. Conditional expressions.
  2. Lab 2: Recursion.
    Homework 2
  3. Lab 3: Character-based I/O.
  4. Lab 4: Character-based I/O.
    Solved problem: conditional expression
  5. Lab 5: Bitwise operators.
    Solved problems: round float, multiply floats (optional: full version with all checks)
  6. Lab 6: Arrays and bits.
  7. Lab 7: Strings and I/O.
  8. Lab 8: Strings, I/O, review.
    Solved problem: XML format
  9. Lab 9: Pointers
    Solved problems: hexadecimal float, text lines
  10. --- (holiday)
  11. Lab 11: Dynamic allocation
  12. Lab 12: Files
    Structures
  13. Lab 13: Abstract datatypes. Lists.

Resources

If you're at a computer without a C compiler, you can compile/run code online, e.g., at JDoodle.

Books

Other C resources (guides, standard, libraries)

General CS education

ACM/IEEE Computing Curricula, in particular Computer Science 2013 curriculum (see CS body of knowledge)
Marius Minea
Last modified: Tue Feb 6 12:25:00 EET 2018