Course Information

Times and Locations

Instructors

Teaching Assistants (in order of office hours schedule)

How to Contact Us

Please post your questions of a general nature to the course Piazza site. Piazza is a web-based platform that allows you to post questions about the course and to receive answers from the instructors, from the TAs, and from your fellow classmates. If you have not already done so, please register for COMP 321 on Piazza by going to the course Piazza registration page.

Throughout the semester, check Piazza frequently for any new questions, answers, announcements, or other information. To do so, go to the course Piazza site, log in to Piazza (if you are not already logged in), and click on "Q & A" at the top of the page, (if it is not already selected). In addition to posting and finding answers to your own questions, reading other questions and answers on Piazza can help you learn additional valuable information including assignment assistance and clarifications. And if you encounter a new problem or question, you may well find an answer to it by searching on Piazza.

When using Piazza, please observe the following guidelines:

Course Description

The primary goal of this course is to expose you to the underlying aspects of computer systems that have an impact on application programming. The major topics of this course include linking, exceptions, memory allocation and management, networking, and concurrency. These topics are important in all computer systems and will prepare you for future courses in compilers, operating systems, computer architecture, and networking.

This course also introduces and uses the C programming language. C is generally considered a low-level programming language, because all of its features can be implemented in a fairly straightforward manner on typical modern processors. Moreover, C exposes the details of memory allocation and management to the programmer. Therefore, it is much easier to gain an in-depth understanding of computer systems, as they relate to programming, by writing applications in C. These lessons can prove invaluable when writing complicated applications in higher-level languages, and when writing tools or building systems that will be used by other programmers. More pragmatically, despite the benefits of higher-level languages, C is still one of the most widely used languages, so a familiarity with it is useful.

Prerequisites

ELEC 220 and COMP 215

Textbook

Required:

Randal E. Bryant and David R. O'Hallaron. Computer Systems: A Programmer's Perspective, Third Edition.

Suggested:

David Griffiths and Dawn Griffiths. Head First C.

This is an introductory book that teaches C programming if you feel you need more material on C. If you are looking more for a reference book, there are some listed on the Related Links page.

Honor Code Policy

Assignments:

Unless otherwise stated, assignments are to be done individually. You may use your text, course notes, and any other reference material (such as C reference books, C reference web pages, or Unix man pages). You may not use any AI-based tools, including, but not limited to, ChatGPT, GitHub Copilot, and TabNine, for any purpose in this course. You may discuss assignment problems, general strategies, or algorithms with other students in the course. However, you may not colloborate on the implementation of those strategies or algorithms and you must write all of your own code. You may not obtain any code from any source, aside from code provided as a part of the course. You may not consult solutions from prior semesters of this course or from similar courses at other universities. For assignments that allow work to be done in groups, you may work within your group however you see fit, but otherwise this policy applies to the entire group as if it were an individual.

Exam:

The final exam will be given in person at a time and place set by the registar. The exam will be closed book and closed notes. During the exam, you may not use a computer or access the Internet. The only resources that you may consult are those provided with the exam.

Regrade Request Policy

If you believe your grade on a homework assignment is incorrect and you would like it to be regraded, you must submit your regrade request within one week (7 days) from when grades for that assignment are released. Your regrade request must be submitted by email to the instructors with a "Subject:" of

COMP 321 Regrade Request

Your email must clearly specify what part of the assignment you think was misgraded and why you believe this to be so.

All regrade requests for questions on the final exam must be submitted by email to the instructors and must be submitted within one week (7 days) from when the graded exams are released.

Requests for regrades made in any other way or made after the one-week cutoff for requesting regrades will not be accepted.

Students with Disabilities

Any student with a documented disability seeking academic adjustments or accommodations is requested to speak with me during the first two weeks of class. All such discussions will remain as confidential as possible. Students with disabilities will need to also contact the Disability Resource Center in the Allen Center.