Programming in C/C++ as a Second Language

UC Irvine - Fall ‘22 - ICS 45C

An introduction to the lexical, syntactic, semantic, and pragmatic characteristics of the C/C++ languages for experienced programmers. Emphasis on object-oriented programming, using standard libraries, and programming with manual garbage collection.

Basics

Lecture: T/Th 8:00-9:20am, In-person @ HSLH 100A
Office Hours:   T/Th 9:30-11am @ DBH 3013
Lab help: caio.link/ics45c-lab-help
TAs:
Grade: 45% projects, 45% quizzes/final, 10% homework (see grading)
Final Exam:   Tue, Dec 6, 8:00-10:00am @ HSLH 100A
Planned schedule:   caio.link/ics45c-schedule

Rules & Guidelines

  • This webpage serves as the course syllabus;
  • Information on this page is subject to change, check occasionally;
  • For academic integrity see campus policies; violations will be reported!
  • For add/drop deadlines see campus policies;
  • All project and homework deadlines are 10PM PT;
  • Lectures will be held in-person, no recordings will be provided;
  • Quizzes will be held during lectures.

Book

We'll use The Rook's Guide to C++ as the course textbook. This is a free book that you can download here: https://rooksguide.org/2013/11/26/version-1-0-is-out/
This book provides a good intro to C++ for first time programmers, and since you've taken a few courses already, the explanations should be easy to follow :)

We might also occasionally use additional material in lecture, which will be posted here. You can also find my lecture notes in that section.

Other Resources

Topics

  1. Introduction (notes)
  2. Interpreted vs Compiled Languages (notes)
  3. I/O (notes)
  4. Variables, Values, and Types (notes)
  5. Branching (notes)
  6. Loops (notes)
  7. Arrays (notes)
  8. Strings (notes)
  9. Functions (notes)
  10. Separate Compilation (notes)
  11. Structs and Unions (notes)
  12. Pointers (notes)
  13. Dynamic Data (notes)
  14. Classes (notes)
  15. Templates (notes)
  16. STL (notes)
  17. Files (notes)
  18. Advanced (notes)

Grading

Exam (9%)

  1. Final, 9%, Tue, Dec 6, 8:00-10:00am @ HSLH 100A

Quizzes (36%)

Quizzes will take place during lecture, in-person only!

  1. Topics 1~5, 9%, 2022-10-18
  2. Topics 6~9, 9%, 2022-11-01
  3. Topics 10~13, 9%, 2022-11-15
  4. Topics 14~15, 9%, 2022-11-29

If you miss a quiz, you’ll have the option to take a make up alongside your final. During week 9 or 10, I will send an announcement through EdStem with a form you can fill selecting the quizzes you missed.

Projects (45%)

All project deadlines are 10PM PT! Submissions will be run through MOSS.

  1. Event Planning (projects/p1-event-planning/); Topics 1~5, 9%, 2022-10-14
  2. Parking Lot Manager (projects/p2-parking-lot-manager); Topics 6~9, 9%, 2022-10-28
  3. Bank Management System (projects/p3-bank-management-system); Topics 10~13, 9%, 2022-11-10
  4. Fundraiser Event (projects/p4-fundraiser); Topics 14~15, 9%, 2022-11-23
  5. Content Delivery Network (projects/p5-cdn); Topics 16~17, 9%, 2022-12-02

You can submit your solutions as many times as you want.

Project Late Submissions
You'll have a 15min buffer to account for any technical difficulties in all project submissions. So, if you submit your project at 10:16PM, it'll be considered late.

Additionally, you'll have a total of 5 extra days to work on your projects. You can use them at your discretion. For example, if Project 1 is due Friday at 10PM, and you make a submission between Friday 10:16PM and Saturday 11:59PM, you'll use one of your days. If you make a submission between Sunday 00:00AM and Sunday 11:59PM, you'll use 2 days. And so on. There is no going back on a used day, i.e., if you made a late submission, that day is used.

You can use 1 day on each of the 5 projects, all 5 days in a single project, or any combination you wish. You don't need to submit anything to use these days, all projects will be open for late submissions and we'll reduce the number of days you have based on your submissions. Please be aware of the number of days you have remaining! No extra days will be awarded, and submissions over your extra days will not be considered.

You can keep track of how many days you have used here: https://canvas.eee.uci.edu/courses/48712/assignments/1055941

Homework (10%)

Homework will be based on the "Review Questions" from our textbook. The chapters might be out of order, as they're assigned to match our projects and quizzes.
  1. Chapters 2~10, 2.5%, 2022-10-18;
  2. Chapters 11~14, 2.5%, 2022-11-01;
  3. Chapters 19~22, 2.5%, 2022-11-15;
  4. Chapters 15~17, 2.5%, 2022-11-29;
  5. Chapter 18, 2.5%, 2022-12-02;
All homework deadlines are 10PM PT and submissions should be made on Canvas. Homework will be graded on good-faith attempts, not correctness. You'll have the same 15 minutes buffer as projects, but submissions over that buffer won't be accepted. Your lowest homework grade is automatically dropped.

Extra Credit

All extra credit will be applied to your final grade.

Regrade Requests

Requests for quizzes should be open through gradescope within 5 days of grade posting.

Project grades will be based on autograders; no manual regrades will be accepted since we don't have the bandwith to do that for all of you, so it wouldn't be fair to do it for a select few. You do have the option to submit your solution multiple times, so you can test your code and make changes before the deadline is up.

Accommodations

Any student who feels he/she/they may need an accommodation based on the impact of a disability should contact me privately to discuss his/her/their specific needs. Also contact the Disability Services Center at dsc.uci.edu or (949) 824-7494 as soon as possible to better ensure that such accommodations are implementationed in a timely fashion.

Lecture Materials

Extra slides, code snippets, etc. will be posted here after lectures.

Commitment to an inclusive learning environment: this class adheres to the philosophy that all community members should enjoy an environment free of any form of harassment, sexual misconduct or discrimination. Please be respectful and kind to one another.