CPSC 305 Syllabus - Spring 2023
Syllabus
CPSC 305, Computer Systems and Architecture
Instructor: Gusty Cooper email: ecooper@umw.edu
Teaching: TR, 405 S1: 8-9:50 Combs 139, 405 S2: 2-3:50 Combs 139, 305 S1: 11-12:50 Combs 139
Office Hours: W 9-12: Farmer 228, TR 10-10:50: Combs 139, 1-1:45: Combs 139, or by appointment
Discord: https://discord.gg/wr3JBcTr4W
GitHub: https://github.com/gustycooper/cpsc305.git
CPSC Catalog: https://catalog.umw.edu/undergraduate/course-descriptions/cpsc/
CPSC 305 in Spring 2023 is taught as a traditional in person class on campus at UMW. Canvas is our learning management system with course material, assignments, submissions, tests, and grades. Canvas contains all of our class PDF documents. Discord is our class discussion board. All class announcements are delivered via Discord. GitHub contains most course code in one convenient location. The course readings are in three module PDF documents. The class schedule in our syllabus shows days on which a module chapters are covered. In addition to in person office visits, we can arrange for Zoom office visits.
Students must be proficient in solving complex problems in a high-level language such as Java - completed UMW CPSC 240 with a grade of C or better, students must be proficient using Unix - completed UMW CPSC 225, and students must be proficient in discrete math - completed UMW CPSC 284 or MATH 325.
This course examines the basic operation of computing systems. It takes a bottom-up approach covering each major component of such systems including hardware, logic circuit design, CPU instruction sets, assemblers,and compilers. Students will gain experience programming in assembly language and C.
In Computer Systems and Architecture we study computing with the primary goal of understanding how the underlying components of a computer work together to execute programs. Upon successful completion of Computer Systems and Architecture, students can solve problems in C/Assembly and visualize how their solutions execute on the layers that comprise the underlying computer architecture.
Your CPSC 305 grade is based upon the following.
Your final grade is the average of labs (25%), projects (25%), and tests (50%) with the following caveats.
Final letter grades are determined according to the following scale.
A 93-100% B+ 87-89% C+ 77-79% D+ 67-69%
A- 90-92% B 83-86% C 73-76% D 60-66%
B- 80-82% C- 70-72% F below 60%
Our class has three modules. Modules have PDF documents, which are on Canvas. Each module consumes approximately a third of our class.
Labs are 25% of your grade. Everyone starts with a 100 for their lab grade. Labs are provided for you to practice and learn. It is your responsibility to complete labs and learn. Anyone can help you complete a lab. I will help you. Labs must be submitted by the due dates in Canvas. Each day a lab is late I will subtract 2 from your lab score. The first two points are subtracted minutes after the due date/time. If a lab is due at 11:59PM and you submit it at 12:03AM, I will subtract 2 from your lab score. I will not score labs. I assume that when you submit a lab, you understand the material and your lab is correct. It is your responsibility to seek help on labs. The C labs are in the ModuleC PDF Document. The ISA labs are in the ModuleISA PDF Document.
We have three tests. Test 2 is just prior to the end of our semester. Test 2 is comprehensive and serves as our Final Exam. Tests will be given during class using paper and pencil.
Test 3 is given during our exam slot. Test 3 is optional. 99% of the students have opted out of Test 3. A few students took Test 3, hoping to improve their final grade. None did. Some actually lowered their final grade. If you want to take the optional Test 3, discuss it with me.
Students successful in CPSC 305 are those who are enthusiastic and industrious. Successful students fulfill their responsibilities.
All assignments are under the UMW Honor Code and the CPSC department honor code policy. Plagiarizing code in a program is an honor code violation just like plagiarizing words in a paper. Be prepared to explain any submission. Contact me if you have questions about Honor Code and this course.
When solving lab and project problems, code obtained from any source other than me is an honor code violation. When working as a team, teammates may share code, but you may not share code across teams. Searching the Internet for certain types of help is acceptable. For example, you can search the Internet for samples of calling scanf, samples of calling malloc, and documentation of concepts in our documents and lectures. However, (1) you cannot search the Internet for code samples that you embed in your lab/project submissions and (2) you cannot seek code from students who previously took the course - doing so is an honor code violation. If you discover a code sample on the Internet that is useful in your lab/project; you must study the code sample, understand it, and then render your own version. You must attribute the source of your rendition.
Homework assignments are for your learning. Homework assignments are individual assignments in that everyone must create their own answers and code; however, you can get help from anyone for homework. You can create a homework group, work together, and/or work with me to learn the material, answer questions, and solve problems. Each student in a homework group must write their own answers and edit/run/test their code.
Labs and projects must be done individually or as a team of two. When working on a lab or project, you cannot discuss your design, implementation, or testing with others or other teams. You may discuss the project specification with others. I will combine two teams to work on the C Project. Final Project can be performed by a larger team, provided I approve the project and team.
Canvas submissions must include the UMW honor code pledge.
Tests must be completed individually, without consulting other students, written sources, and electronic sources. Study for the test, use your brain, and create your answers.
Syllabus Statements
The Office of Disability Resources has been designated by the college as the primary office to guide, counsel, and assist students with disabilities. If you receive services through the Office of Disability Resources and require accommodations for this class, please provide me with a copy of your accommodation letter via email or during a meeting. I encourage you to follow-up with me about your accommodations and needs within this class. I will hold any information you share with me in the strictest confidence unless you give me permission to do otherwise.
If you have not made contact with the Office of Disability Resources and have reasonable accommodation needs, their office is located in Seacobeck 005, phone number is (540) 654-1266 and email is odr@umw.edu. The office will require appropriate documentation of disability.
University of Mary Washington faculty are committed to supporting students and upholding the University’s Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence. Under Title IX and this Policy, discrimination based upon sex or gender is prohibited. If you experience an incident of sex or gender based discrimination, we encourage you to report it. While you may talk to me, understand that as a “Responsible Employee” of the University, I MUST report to UMW’s Title IX Coordinator what you share. If you wish to speak to someone confidentially, please contact the below confidential resources. They can connect you with support services and help you explore your options. You may also seek assistance from UMW’s Title IX Coordinator. Please visit http://diversity.umw.edu/title-ix/ to view UMW’s Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence and to find further information on support and resources.
Resources Ruth Davison, Ph.D. Title IX Coordinator Lee Hall, Room 401 1301 College Avenue Fredericksburg, VA 22401 Phone: 540-654-5656 E-mail: rdavison@umw.edu Website: http://diversity.umw.edu/title-ix/ | Confidential Resources On-Campus Talley Center for Counselling Services Lee Hall 106, 540-654-1053 Student Health Center Lee Hall 112, 540-654-1040 Off-Campus (24-hour hotlines) Empowerhouse, 540-373-9373 Rappahannock Council Against Sexual Assault (RCASA), 540-371-1666 |
Video and/or audio recording of class lectures and review sessions without the advanced consent of the instructor is prohibited. On request, the instructor may grant permission for students to record course lectures, on the condition that these recordings are only used as a study aid by the individual making the recording. Unless explicit permission is obtained from the instructor, recordings of lectures and review sessions may not be modified and must not be transferred or transmitted to any other person, whether or not that individual is enrolled in the course. Students with approved accommodations from the Office of Disability Resources permitting the recording class meetings must present the accommodation letter to the instructor in advance of any recording being done. On any days when classes will be recorded, the instructor will notify all students in advance. Distribution or sale of class recordings is prohibited without the written permission of the instructor and other students who are recorded. Distribution without permission is a violation of educational law. This policy is consistent with UMW’s Policy on Recording Class and Distribution of Course Materials.
So far, we do not have a Spring 2023 Covid-19 Statement. If one is created, I will update the syllabus. The UMW Return to Campus webpage discusses Covid-19.
https://www.umw.edu/returntocampus/
Summary of webpage.
CPSC 305, C, and Linux
Learning to solve problems using C and assembly are two goals of CPSC 305. CPSC 305 uses the Linux environment for C programming. The tools used for assembly programming are C programs that are built in the Linux environment. The following sections describe how to establish Linux and C for MacOS, Windows 10, and Linux.
The MacOS terminal windows are Linux. Install Xcode from the Mac App store. This places the C compiler tool suit on your Mac. We access the C compiler tool suite using a terminal application. We do not use the Xcode IDE.
Windows supports Windows Subsystem for Linux (WSL). The entire WSL documentation is at
https://docs.microsoft.com/en-us/windows/wsl/
There are two versions - WSL1 and WSL2. WSL2 is newer and preferred, but either works for our purposes. I have installed and used both WSL1 and WSL2. I installed WSL 1 on an older computer that does not have a version of Windows required for WSL2. Second, on my newer Windows, I installed WSL2. If your computer supports WSL2, you should install it. For installation of WSL1/2 see
https://docs.microsoft.com/en-us/windows/wsl/install-win10
The installation includes an Ubuntu distribution, which is fine for us.
You run Ubuntu from the Windows home button. The first time you run Ubuntu, you must create a username and password.
You want to easily share files between Windows on Ubuntu. You can find several ways to do this on the Internet. One way is to enter the following command in your Ubuntu
$ explorer.exe .
You get an Explorer window that is viewing your Linux files. Drag the box showing the Linux path to the Quick Access in the Explorer window. You can drag files from Windows to this Quick Access point. When I viewed the files from Linux, they were owned by root. You can do the following to change the file owner. The gusty:gusty is your username.
$ sudo su
# chown gusty:gusty *
You must install make, gcc, and ncurses on your Linux. To establish the C compiler and ncurses, issue the following commands.
$ sudo apt update
$ sudo apt install build essential
$ sudo apt-get install manpages-dev
$ gcc --version
$ sudo apt-get install libncurses5-dev libncursesw5-dev
When you enter $ make, make provides the commands to install make.
You can also install Windows Terminal from the Microsoft Store. The terminal has tabs, so you can run ubuntu via the > ubuntu command.
For those of you using Linux, you are ready. Linux is Linux and has the C compiler tools suite.
We have a cloud server at cpsc.umw.edu, on which you can request an account.
% ssh ecooper@cpsc.umw.edu
ecooper@cpsc.umw.edu's password:
*************************************************************
* Welcome to *
* ___ _ __ ___ ___ *
* / __|| '_ \ / __| / __| *
* | (__ | |_) |\__ \| (__ *
* \___|| .__/ |___/ \___| *
* |_| *
* *
* For use by UMW faculty and staff for academic use only. *
* Please be respectful of others. Questions and issues can *
* be directed to ifinlay@umw.edu *
*************************************************************
Last login: Wed Jul 6 17:37:17 2022 from 24.245.105.21
Hello
ecooper@cpsc:~$ ls
bin cpsc305
Schedule
Schedule - Adjusted as needed during semester
1/10 Syllabus, C-Course Intro, C-Intro | 1/12 C-Data Types and Memory |
1/17 C-Pointers | 1/19 C-Expressions and C-Algorithms |
1/24 C-Functions | 1/26 C-I/O, HW 1 |
1/31 C-Structures | 2/2 C-Building C Programs |
2/7 C-Solving Problems with C | 2/9 C-Info Encoding Characters Final Project Idea Due |
2/14 C-Info Encoding Int | 2/16 C-Info Encoding Floating Point, HW 2 |
2/21 Test 1 | 2/23 ISA-CPU C Project Due on 2/24 |
2/28 Spring Break | 3/2 Spring Break |
3/7 ISA-Assembly Intro and Assembly If | 3/9 ISA-Assembly Loops |
3/14 ISA-Assembly Functions | 3/16 ISA-Assembly Stack Final Project Specification Due |
3/21 ISA/ARCH Overlap | 3/23 ARCH-Memory Hierarchy |
3/28 ARCH-Memory Types, HW 3 | 3/30 ARCH-Parallel ISA Project Due on 3/31 |
4/4 ARCH-Boolean Intro | 4/6 ARCH-Transistors |
4/11 ARCH-Computer Components | 4/13 Test 2 (Final Exam) |
4/18 Final Project Demonstrations | 4/20 Final Project Demonstrations |
4/25 Test 3 S1:noon-2:30 |