George Mason University - Department of Computer Science
Section | Days | Time | Location |
---|---|---|---|
B01 | Tue/Thu | 10:30-1:10 PM | Merten Hall 1200 |
Lab | Tue/Thu | 1:30-2:20 PM | Horizon Hall 2016 |
Welcome to the world beneath the abstractions! This course dives into low-level programming with C: a language that strips away the training wheels and puts you closer to the machine than most modern languages ever allow.
Why does this matter? Because understanding how your code actually runs (how data moves in memory, how the OS juggles processes, how your program talks to hardware) is what turns good developers into great ones. C gives you that power. Unlike Python or Java, C doesn't hide the gritty details: you manage memory, work directly with pointers, and interact closely with the operating system. That means you'll not only learn how to write programs, but how computers actually work underneath it all.
Originally designed to build Unix, C remains the backbone of operating systems, embedded systems, and performance-critical software. Even today, the tools and environments that run our modern world, from smartphones to supercomputers, rely on code written in C. If you want to understand systems programming, you need to understand C.
In this course, you'll explore C and Unix in tandem. You'll manipulate memory with pointers, navigate and script the command line, and learn how programs interact with files, processes, and the OS itself. The abstractions of high-level languages will start to make more sense, because you'll know exactly what they're hiding.
Students must have earned a C or better in CS 211 or CS 222, and a C or better in CS 110. (CS 110 may be taken as a co-requisite with CS 262.)
Any permission to miss an exam must be arranged ahead of time unless it is the result of an illness on the day of the exam. In such cases, documentation may be required to reschedule the exam.
If the university is closed for any reason, class will be held online. Videos covering the material will be posted for those who could not attend.
Projects and labs will be graded by runs on Zeus. Information on how to connect can be found at the following link: https://labs.vse.gmu.edu/index.php/Systems/Zeus
For any course related matters or if you just want to talk about interesting CS related topics, you can either email me, talk with me before/after class, or stop by office hours. I love to talk about anything and everything math and CS, even if it isn't directly related to this course !
I monitor my Mason email regularly. If you do not receive a response within 24 hours, please assume I missed your message and send a reminder.
Any questions about course material must go through your Mason email. This is both university policy and a legal requirement to ensure no private information (grades, etc) are disclosed to anyone other than the student or a person they have authorized.
Grades are based on the following components:
Do I curve? Yes. Curves are applied on a per-question basis based on overall class performance.
How long do I have to wait for my grades? Grading turnaround is typically a few days for quizzes and around one week for projects.
What if I turn my work in late? Late work loses 10% per day. Late tokens (3) apply only to projects.
The course material will be posted on Canvas. Quizzes and exams will be graded via Gradescope, with extensive feedback provided for quizzes and the midterm. Projects and labs will be graded via Canvas.
Grade | Percentage Range |
---|---|
A+ | ≥ 98 |
A | 92 ≤ x < 98 |
A- | 90 ≤ x < 92 |
B+ | 88 ≤ x < 90 |
B | 82 ≤ x < 88 |
B- | 80 ≤ x < 82 |
C+ | 78 ≤ x < 80 |
C | 72 ≤ x < 78 |
C- | 70 ≤ x < 72 |
D | 60 ≤ x < 70 |
F | < 60 |
The department policy stipulates that in order to pass the course, you must meet at least one of the following criteria:
I will always do my best to create an environment where you're not just showing up to absorb information, but to be in an environment where your questions are heard, your time is respected, and your efforts are met with equal commitment on my part. If something isn't clear, or if a lot of people miss the same question on a quiz, I take that seriously. That's not just a "you" problem, that's a signal for me to revisit how I explained or emphasized something.
I know tests are stressful, so you'll always know what to expect. After each lecture, I'll add a few related questions to a growing bank of practice problems, so review isn't just something that happens in a panic before the test. Before every quiz, we'll have a dedicated review session. And when it comes time for exams, they'll match what we've practiced, in both format and focus. No surprises, no trick questions, no bait-and-switch.
I also really value student input. Not just about the material, but about how the course is going. If something isn't working for you, let me know. If you have an idea that could make things better, I will always want to know.
Language models (like ChatGPT and others) are amazing tools, and I'm not going to pretend they don't exist or shouldn't be used. In fact, they can be a great aid for learning, whether you're exploring a new concept, trying to understand error messages, or reviewing code.
But here's the catch: don't outsource your thinking. There's a reason we didn't use calculators on math tests in elementary school, but we did in high school. It's perfectly fine to delegate things that are well below your current level of understanding. But if you find yourself reaching for a tool to do something you haven't yet mastered, you're robbing yourself of the chance to grow.
Also, real talk: in a year or two, you'll be interviewing for jobs alongside a lot of students who did outsource their learning. You'll be able to absolutely dunk on them, because you took the time to build actual understanding instead of copying output. Play the long game. Your future self will thank you.
Week | Date | Lecture Topics | Reading | Assignments Out | Assignments Due |
---|---|---|---|---|---|
1 | May 26 - Jun 1 |
Introduction to C vi/vim Operators & Expressions User Input & Makefiles |
Ch 2; 7 (7.1) Ch 19 [CiN] |
Lab 1 Lab 2 Quiz 1 |
Lab 1 |
2 | Jun 2 - Jun 8 |
Control Flow Functions Arrays |
Ch 4 Ch 7 [PwC] Ch 5 (5.1-5.6) |
Project 1 Lab 3 Lab 4 Quiz 2 |
Lab 2 Lab 3 |
3 | Jun 9 - Jun 15 |
Strings Pointers Midterm Exam Review |
Ch 5 (5.11-5.12) Ch 10 [PwC] |
Lab 5 Lab 6 Quiz 3 |
Lab 4 Lab 5 |
4 | Jun 16 - Jun 22 |
Midterm Exam Multidimensional Arrays |
Ch 10 [PwC] Ch 7 Ch 14 [CiN] |
Project 2 Lab 7 |
Project 1 Lab 6 |
5 | Jun 23 - Jun 29 |
Data Files & Formatting Preprocessing Directives Debugging C Programs Structures |
Ch 20 [CiN] Ch 6; Ch 11 [PwC] (11.1-11.5) |
Lab 8 Lab 9 Quiz 4 |
Lab 7 Lab 8 |
6 | Jun 30 - Jul 6 |
Self-Referential Structures Linked Lists Valgrind |
Ch 11 [PwC] Ch 4 [HFC] Ch 2 (2.9) Ch 6 [HFC] |
Project 3 Lab 10 |
Project 2 Lab 9 |
7 | Jul 7 - Jul 13 |
Bitwise Operations & Files Multiple Source Files The UNIX System Interface Using Make |
Ch 8 Ch 13 [PwC] Ch 19 [CiN] |
Lab 11 Quiz 5 |
Lab 10 |
8 | Jul 14 - Jul 20 |
Linking Final Exam Review |
--- | --- |
Project 3 Lab 11 |
George Mason University is committed to providing a safe and non-discriminatory environment for all students. If you experience or witness any form of sexual harassment, please report it to the Title IX Office
This is not only university policy, but extremely important to me personally. Everyone taking this class has the right to feel like they are exactly where they belong. Everyone, regardless of gender, sex, race, politicial beliefs, religion, veteran status, nationality, or any other matter of personal identity, will be treated equally. You can expect to be called the name you want, and treated with nothing but respect.
If at any time you feel uncomfortable in this class, please contact your professor directly.
The Family Educational Rights and Privacy Act (FERPA) is a federal law that protects the privacy of your educational records. For more information, visit the GMU FERPA Information Page
If you have a disability and require accommodations, please contact the Office of Disability Services. They will work with you to ensure that you receive the necessary support and accommodations. To make use of your accommodations in this class, reach out to me via email so we can get everything arranged.
In this class, I assume you're here because you want to learn, not just to get through the course. I promise to meet you with that same energy and commitment. Because of that, it's important to be clear: unless an assignment explicitly says otherwise, your work should be your own.
This isn't about policing or trying to "catch" anyone. It's about respect. When you submit your work, I treat it as a reflection of your effort and understanding, because I respect your time and want to help you grow. If that reflection isn't actually yours, it becomes very hard for me to help you.
Ask for help. Talk to classmates. Use the resources available. But when it comes to actual code or written solutions, do your own work. Not because you're scared of the consequences, but because you're here to actually learn, and learning requires doing.
The Student Support and Advocacy Center (SSAC) offers a range of services to support students' well-being and academic success. SSAC is all about assisting students encountering barriers to personal success.
Learning Services offers free academic coaching, workshops, and study resources to help students improv time management, study strategies, and academic performance. Services are available both in-person and online.
For your convenience, here is a map showing the location of the professor's office (orange arrow) and the lecture building (red arrow)
View GMU Fairfax Map