This course takes a bottom-up approach to answering the question of how a computer works. Topics include theoretical models of computation, bits, bytes and data representations, operations on data, digital logic structures, computer memory, assembly and machine code, hardware components, the stack, the operating system, compilers, and the C programming language. We examine the hardware and software components required to go from a program expressed in a high-level programming language like Python or C to the computer actually running the program.
This course assumes completion of CS21 or its equivalent.
Professor: Richard Wicentowski
Office: Science Center 251
Phone: (610) 690-5643
Office hours: Monday 9:30am - 11:30am and by appointment
Room: Science Center 256
Class Time: Tuesday/Thursday 9:55am–11:10am
Lab Time: Thursday 2:40pm–4:10pm
Text: Patt, Y. and Patel, S. Introduction to Computing Systems: From bits and gates to C and beyond (2nd edition).
50% | Labs |
25% | Final exam |
20% | Midterm exam |
5% | Class Participation and Attendance |
Lab assignments will typically be assigned in lab on Thursday and be due the following Wednesday evening. You are strongly encouraged to start early and ask questions early if you get stuck.
Because we will discuss the solutions to lab assignments in class, late assignments will not normally be accepted; however, special exceptions can be made if you contact me well in advance of the deadline. Even if you do not fully complete an assignment, you should submit what you have done to receive partial credit.
Some labs may take a considerable amount of time, so you are strongly encouraged to begin working on assignments well before the due date.
You will submit you assignments electronically using the handin33 program. You may submit your assignment multiple times, but each submission overwrites the previous one and only the final submission will be graded.
Academic honesty is required in all work you submit to be graded. With the exception of your partner on lab assignments, you may not submit work done with (or by) someone else, or examine or use work done by others to complete your own work. Not all lab assignments will be done with a partner.
You may discuss lab specifications and requirements with others in the class to be sure you understand the problem. In addition, you are allowed to work with others to help learn the course material. However, with the exception of your lab partner, you may not work with others on your lab assignments in any capacity.
All code you submit must be your own with the following permissible exceptions: code distributed by me as part of the class, code found in the course text book, and code worked on with your lab partner. You should always include detailed comments that indicates which parts of the lab you received help on, and what your sources were.
Please see me if there are any questions about what is permissible.
Below are some external links which may be helpful to you.