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/ 

Course Delivery

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.

Course Prerequisites

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.

Catalog Description

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.

Course Goals, Objectives, and Outcomes

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.

Required Materials and Computing Capability

Grade Determination

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%

UMW provides mid-semester grading feedback. A student will receive a mid-semester unsatisfactory (U) grade if he/she has an average that is less than 70.  Any student receiving a U mid-semester grade should meet with me to develop a performance improvement plan.

Modules, Homework, Labs, Projects, and Tests

Our class has modules, homework, labs, projects, and three tests. You can get help from anyone on labs. All submissions and due dates are on Canvas. See section Honor Code in CPSC 305 for more information on solving homework, labs, and projects.

Modules - C, ISA, and ARCH

Our class has three modules. Modules have PDF documents, which are on Canvas. Each module consumes approximately a third of our class.

Labs and Homework

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.

Projects

Projects may be performed by a team of two students. You do not have to join a team. Both students on a team must submit projects on Canvas. I will score one of the submissions.

Tests

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.

NO​ makeup tests are given except in the case of an unavoidable absence that can be verified as legitimate through the Office of Academic Services. If you have a legitimate, planned absence, you must arrange with me an alternative date well in advance.

Student Responsibilities and Late Policies

Students successful in CPSC 305 are those who are enthusiastic and industrious. Successful students fulfill their responsibilities.

Honor Code in CPSC 305

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

Accessibility Statement

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.

Title IX Statement

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

Recording Statement

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.

COVID-19 Statement

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.

Linux on MacOS

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.

Linux on Windows

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.

Linux on Linux

For those of you using Linux, you are ready. Linux is Linux and has the C compiler tools suite.

UMW CPSC Linux Server

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