ESE 124 — C Programming
4 credits
The course presents fundamental and more advanced C programming concepts. Lectures discuss the C language constructs and exemplify their using in relevant programming applications. The course also introduces fundamental concepts in electrical and computer engineering, such as bitwise operations, text file scanning, stack-based computation, table-based finite state machine implementation, hash tables, and linked lists. Scheduled lab activities focus on devising, implementing, debugging, and validating C programs for the concepts discussed in class. A course project focuses on developing a more extensive C program that comprehensively utilizes the programming concepts discussed during the semester. May not be taken for credit in addition to EEO 124.
Prerequisite: Declared Area of Interest or Major in Electrical or Computer Engineering.

Programming resources
- C Fundamental Programming — notes, examples and solutions
- BroBank — five-week C programming project
- GitHub Classroom setup and submission instructions
- Open / download the complete Summer 2025 syllabus (PDF)
Semester syllabi
The source includes separate spring, summer and fall outlines. The Spring 2025 dates and Summer 2025 document are retained as historical course material; policies differ by semester.
Semester outlines
Spring syllabus
| Week | Topic | Overview |
|---|---|---|
| 1 | Introduction to C Programming | Basic syntax, #include, variables, operators |
| 2 | Data Types and Bitwise Operations | Primitive types, logic & bitwise operations |
| 3 | Conditionals and Loops | Control structures: if, switch, loops |
| 4 | Functions and Scope | Function declarations, variable scope |
| 5 | Arrays and Strings | Working with structured data |
| 6 | Abstract Data Types | Header files, modular programming |
| 7 | Pointers and Memory Management | Pointer arithmetic, dynamic memory allocation |
| 8 | Finite State Machines | Table-based FSM implementation |
| 9 | Linked Lists | Implementation and applications |
| 10 | Hash Tables | Implementing hashing techniques |
| 11 | Recursion | Recursive programming concepts |
| 12 | Final Review & Project Completion | Course wrap-up and final project work |
| Component | Weight |
|---|---|
| Midterm Exam | 25% |
| Final Exam | 25% |
| Weekly Homework | 15% |
| Lab Assignments | 20% |
| Course Project | 15% |
| Extra Credit (Participation & Bonus) | Up to 5% |
Late Submission Policy: Homework submitted up to 2 days late will be graded out of 75% of the maximum.
Passing Criteria: In the final exam, you must score at least 45 out of 100 to pass.
| Grade | Percentage range |
|---|---|
| A | 90–100 |
| A− | 85–89.99 |
| B+ | 80–84.99 |
| B | 75–79.99 |
| B− | 70–74.99 |
| C+ | 65–69.99 |
| C | 60–64.99 |
| C− | 55–59.99 |
| D+ | 52–54.99 |
| D | 48–51.99 |
| F | 0–47.99 |
Important dates — source Spring 2025
- First Day of Lectures: Tuesday, January 27, 2025
- Lab Activities Start: Week 2
- Midterm Exam: Thursday, Week 8
- Final Exam: As scheduled by the university
Source date conflict: The source says “Tuesday, January 27, 2025.” January 27, 2025 was a Monday; the source wording is retained here pending clarification.
Summer syllabus overview
| Week | Syllabus | Overview |
|---|---|---|
| 1 | Foundation: Programming fundamentals, data types, expressions | Starts with basic building blocks |
| 2 | Logic & Control: Decision-making, repetition, control statements, loops, bits, number systems | Advances to decision-making and repetition in code |
| 3 | Data Structures: Arrays, strings, text processing | Introduces ways to store collections of data |
| 4 | Core Operations: Mathematical operations, type conversion, bitwise operations, functions | Covers mathematical operations and essential core operations |
| 5 | Advanced Concepts: Finite State Machines, pointers, memory management, ADT implementation (Stack, Queue) | Introduces advanced concepts and data structures |
| 6 | Applied Concepts: File input/output, data structures, algorithms | Applies concepts to real-world problems |
Summer 2025 — Programming Fundamentals
Historical syllabus: July 7–August 15, 2025. Required course; 4 credit hours; synchronous attendance. Instructor: Jenny Chen — jenny.chen.4@stonybrook.edu.
Open / download the complete Summer 2025 syllabus (PDF)
The course covers basic and advanced C programming concepts, language constructs and practical applications; bitwise operations, text file scanning and stack-based computation. Labs create, debug and validate C programs related to class material, and the final project uses the learned concepts in a comprehensive program.
Goals: Understand C fundamentals (syntax, data types, functions, pointers, bitwise operations, text file scanning, stack-based computation, table-based finite state machine implementation etc.), write clear programs, solve problems, and prepare for advanced computer science and engineering.
Attendance and camera policy
Keep cameras on during lectures and lab activities. Students are randomly selected to answer questions for extra points; wrong answers do not lose points. This supports participation and attendance tracking.
Submit online exercise activities from Brightspace assignments to GitHub. Quiz, exams and final use the LockDown browser: Brightspace LockDown browser instructions.
| Component | Weight |
|---|---|
| Lab Activity | 20% |
| Quiz | 15% |
| Exam 1 | 25% |
| Exam 2 | 25% |
| Final Project | 15% |
Late submissions: Grades are deducted by one-quarter grade for each overdue day.
Weekly quiz: Thursday, 9:30–9:55 AM, camera on. Log in to the Brightspace course first, then use LockDown browser. The lowest score is dropped.
Success tips
- Watch weekly Brightspace videos before lectures and bring questions.
- Find question and solution links in Brightspace; use rubrics to guide answers.
- Log in daily for at least 3.5 hours; consistent daily engagement is required in this intensive course.
| Week and dates | Topics | Important notes |
|---|---|---|
| 1: July 7–11 | Basic C, bitwise operations, ASCII, control statements | |
| 2: July 14–18 | Taylor Series, text scanning, File I/O, Bubble Sort | |
| 3: July 21–23 | Review; Exam 1 | July 23 evening; LockDown browser |
| 4: July 28–August 1 | Functions; Finite State Machines (FSM) | |
| 5: August 4–8 | Pointers, function pointers, structs, ADT | |
| 6: August 11–15 | Exam 2; final project and summary | Exam 2: August 11 evening. Final (make-up): August 13, harder, evening. |
Lab submissions: Two exercises per week, due Friday and Sunday at 11:59 PM. Submit on GitHub through the Brightspace assignments tab.
| Meeting | Time and location |
|---|---|
| Lecture | Monday/Wednesday, 9:30 AM–12:55 PM, Zoom |
| Lab | Tuesday/Thursday, 9:30 AM–12:55 PM, Zoom |
| Office hours | Thursday, 2–3 PM, Zoom |
Student Accessibility Support Center
Students with a physical, psychological, medical or learning disability that may affect coursework should contact the Student Accessibility Support Center, 128 ECC Building, (631) 632-6748, sasc@stonybrook.edu. The center determines necessary and appropriate accommodations with the student; information and documentation are confidential.
Academic integrity and critical incident management
Students must pursue academic goals honestly and be personally accountable for submitted work. Representing another person’s work as your own is wrong. Faculty must report suspected dishonesty to the Academic Judiciary; Health Sciences Center and School of Medicine faculty follow school-specific procedures. Academic integrity information.
Respect other people’s rights, privileges and property. Faculty must report disruptive behavior that interrupts teaching, compromises safety or inhibits learning to the Office of University Community Standards. HSC and School of Medicine faculty follow school-specific procedures. Further academic information is available in the Undergraduate Bulletin, Undergraduate Class Schedule and Faculty-Employee Handbook. Full policy wording is retained in the linked PDF, prepared April 30, 2025.
Fall syllabus overview
| Week | Syllabus | Overview |
|---|---|---|
| 1 | Foundation: Programming fundamentals — syntax, compilers, IDEs, variables, data types, operators and expressions. Command line and debug tools. | Introduction to programming basics |
| 2 | Logic & Control: Decision-making through control statements, operators, ASCII values, bitwise operations and number systems. | Control structures for decision-making |
| 3 | Data Structures: Arrays, C strings and Taylor Series implementation. | Introduction to data structures and arrays |
| 4–5 | Continuation of Data Structures and Introduction to File Input/Output | More on data structures and file handling |
| 6–7 | Functions, Modular Programming and Debugging Techniques | Modular programming and debugging |
| 8–10 | Object-Oriented Programming (OOP) Concepts, Inheritance, Polymorphism, Encapsulation, Abstraction | OOP principles and concepts |
| 11–12 | Advanced Topics: Pointers, Dynamic Memory Allocation, Linked Lists, Stacks, Queues, Trees, Graphs | Advanced data structures and memory management |
| 13–14 | Project Development, Implementation and Testing | Project implementation and testing |
| 15 | Final Project Presentations and Review | Final project presentations |
The fall source explicitly includes object-oriented programming topics in weeks 8–10; that wording is preserved.