Course Syllabus

Home | Syllabus | Schedule | Videos | Assignments | TA Infos | Resources

Course Description

EECS 22 Advanced C Programming (3)
C language programming concepts. Control flow, function calls, recursion. Basic and composite data types, static and dynamic data structures. Program modules and compilation units. Preprocessor macros. C standard libraries.
Prerequisites: EECS 10 or EECS 20.
(Design units: 1)

Course Objectives and Student Outcomes

This course relates to Student Outcomes: EAC a, e, and k.

  • Related EAC Student Outcomes:

    • (EAC a) an ability to apply knowledge of mathematics, science, and engineering
    • (EAC e) an ability to identify, formulate, and solve engineering problems
    • (EAC k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
  • Course Learning Outcomes:

    • Students will read given source code in C and understand its behavior (EAC k)
    • Students will be able to extend existing source code for new features (EAC a, e, k)
    • Students will be able to write original source code to solve an engineering problem (EAC a, e, k)
    • Students will be able to organize source code in a modular form (EAC k)
    • Students will be able to design and implement dynamic data structures using user-defined data types (EAC e, k)

Course Resources

  • Course web site
    online at
  • Reference book:
    B. W. Kernighan, D. M. Ritchie:
    The C Programming Language,
    Second Edition,
    Prentice Hall, 1988.
    ISBN 0-13-110362-8
  • Supplemental text book:
    Paul Deitel, Harvey Deitel:
    C: How to Program,
    Eighth Edition,
    Pearson, 2016.
    ISBN-10: 0133976890
    ISBN-13: 978-0-13-397689-2

Course Contents

Week Topic
0 Review of C expressions, statements, control flow
1 Primitive, composite, and user-defined data types
2 Functions and parameter passing semantics, recursion
3 Variable scope rules (global, static, auto, extern)
4 Pointers and pointer arithmetic
5 Dynamic memory allocation
6 Dynamic data structures: linked lists, stacks, queues, trees
7 Function pointers and callback
8 Preprocessor definitions, conditionals, and macros
9 Program modules, header files, compilation units
10 Compilation and linking process, Makefile
11 C standard library, external libraries
  • Note that contents are tentative and may change.
  • Please see the Schedule page for up-to-date scheduling information.

Course Policies

  • In-Person Course:

    The primary mode of instruction for this course is in-person. However, remote participation is accommodated through hybrid/dual-delivery fashion where some course elements are in-person and some are online/remote. Best effort is made to make participation possible in-person as well as remote/online.
  • COVID-19 Health Guidelines:

    This course follows all health guidelines defined by the UCI campus.
  • COVID-19 Reporting:

    This course follows the reporting guidelines defined by the UCI campus.
  • Attendance Policy:

    Attendance at lecture and discussion sections is required. Attendance may be taken with a sign-in sheet for in-person meetings (for COVID-19 contact tracing purposes), if/when needed.
    It is the student's responsibility to make prior arrangements with the instructor (or the TAs) for any absence known in advance. Make-up assignments and/or exams can only be arranged for absence due to medical (or similar) reasons. Proper documentation is required.
  • Laboratory Policy:

    Labs assigned to this course are listed in the Schedule of Classes (see course codes 16401-16404). Lab work is performed remotely from a laptop over a network connection to departmental servers. Students may remote login to the server at any time (24/7), but live instructor support is available only during the assigned lab hours.
    All lab work is to be done individually. Copying answers or program code is strictly prohibited.
    Programs must be well documented with useful comments. Excessive, insufficient, or useless comments in the program will result in deducted points.
    Linux is the standard programming platform used for this course. All processes run on the EECS Linux server, (or alternative While other platforms may be used to develop and test the programs, all course work will be checked and graded on these servers.
    A command-line terminal with SSH is required to login to these servers. Please refer to the Resources page for a list of suitable SSH clients.
  • Assignments:

    Assignments are listed on the Assignments page. They are assigned on a weekly or bi-weekly basis as indicated on the course web pages.
    Assignments are generally due on Wednesday at 12pm (noon), unless indicated otherwise on the assignment page.
    The deadline for assignments is hard. Home work turned in after the due date/time will not be graded and will receive no credit. The clock on the server shall be used as the reference clock.
    All assignments are to be submitted electronically while being logged into the account on the server. Detailed instructions on home work submission will be provided with the assignment description.
  • Exams:

    The course includes one midterm and one final examination, scheduled as listed on the Schedule page.
    Each exam covers all the material discussed in the course until the day of the examination.
    Unless announced otherwise, all exams are closed-book examinations. No books, notes, computers, calculators, cell phones, or any other devices are allowed. An official photo ID is required for inspection.
    Final examinations are administered during examination week at the time announced in the schedule of classes.
  • Grading Policy:

    The final grade for the course will be calculated as a weighted sum of the points scored in the home works, the midterms, and the final examination, as follows:
    • 50% Assignments
    • 20% Midterm examination
    • 30% Final examination
    Extra credit may be earned with home works if indicated in the assignment.
  • Academic Honesty:

    Academic integrity is essential, as published by the Office of Academic Integrity and Student Conduct (AISC): Academic Integrity Information for Students.
    Under no circumstances are students allowed to work together on any of the examinations.
    Cheating is a dishonest representation of the course work, including but not limited to cheating on an exam, fraudulently presenting lab exercises or assignments by someone else as one's own, or getting someone else to take the course. It is a serious academic offense that will not be tolerated. Cheaters can expect to receive a failing grade and will be punished under University regulations.
  • Course Material:

    All course material is for use in the context of this course only. Selling, preparing, or distributing for any commercial purpose course lecture notes or video or audio recordings of any course unless authorized by the University in advance and explicitly permitted by the course instructor in writing. The unauthorized sale or commercial distribution of course notes or recordings by a student is a violation of these Policies whether or not it was the student or someone else who prepared the notes or recordings.

Course Summary:

Date Details Due