CS 203L: Computer Organization Lab

Fall 2020

Welcome to Lab for Computer Organization!

All the labs/lectures/videos will be distributed through Moodle.

Section 1 meets TR, 1:15-2:30 pm via the video conference link on Moodle.
Section 2 meets TR, 4:15-5:30 pm via the video conference link on Moodle.

Course Description

Course Description

This lab complements the class CS 203: Computer Organization.  It provides hands-on experience with the programming languages and techniques that permit access and manipulation of the basic building blocks of a computer.  During this lab, you will learn the ‘C’ programming language and some assembly language.  You will also learn to develop programs for Linux.

Instructor

Instructor Information(back up↑)

    • Instructor: Dr. Joann J. Ordille
    • Email: ordillej at lafaytte.edu
    • Office Phone: (610) 330-5416
    • Office Hours: TR 5:45-6:45 pm (except when a faculty meeting is called),  F 3-4 pm. Please email me if you would like to meet at any other time.

Useful Links

Useful Links and Resources(back up↑)

HackerRank.com provides progressively more difficult C practice problems. It provides an environment where you can simulate the experience you will have in the lab exam. HackerRank is also a great place to practice various programming skills in preparation for interviews.

You will receive a notification to join our lab’s Slack which we will use for online discussions and Q&A.

We will use Slido during our class meetings to facilitate class discussion.  The code for joining Slido will be displayed and available through a QR-code at the beginning of class.  It will also be available on Moodle.

    • Moodle

Detailed information for activities and assignments will be available on Moodle.

Course Information

Course Information(back up↑)

      • Web Page:http://sites.lafayette.edu/ordillej/cs-203L-computer-organization-lab-syllabus-fall-2020/
      • Textbooks:
        • zyBook on Computer Organization
        • C, by Roman Lysecky, Frank Vahid, et al. Zyante (zybooks.com), 2019. The material from this book is incorporated into Chapter 7-18 in our course zyBook.  Information on accessing the book will be distributed in class via Moodle.
      • Prerequisite: Students are required to have completed CS 150 (Data Structures and Algorithms) and to be co-registered in CS 203 (Computer Organization) in order to take this lab.

Course Goals and Outcomes

Course Goals and Outcomes(back up↑)
Course Goals: The goals of this lab are to convey:

      • How to write, test and debug programs in an assembly language
      • How to write, test and debug programs in the ‘C’ language
      • How to develop programs on and for a Linux system

Course Outcomes: After successfully completing this lab and the course, students will be able to:

      • Apply knowledge of computing and mathematics appropriate to the program’s student outcomes and to the discipline.(ABET Outcome A).
      • Recognize the need for and have the ability to engage in continuing professional development. (ABET Outcome H).

Assignment Types

(back up↑)Assignment Types

Class Participation: Class participation includes asking or answering questions, expressing an opinion about a topic of discussion, meeting with me during office hours, interacting with me on Slack, participating in your team and reporting on activities in a team project or other activity. All sincere efforts to participate are admired, so don’t worry, just speak up. You are even welcome to express an opinion different than mine. All types of participation count except participation that shows you failed to prepare for class. For example, asking: “Who is Ada Lovelace?” when the assignment was to read the Countess of Lovelace’s biography would not count as class participation. But, it’s always better to ask than to sit there in the dark.

Lightweight Team Participation: Research has shown that students learn better in a community with their peers. We hope to help you form that community by creating lightweight teams that will collaborate in various lab activities. The teams are lightweight, because they are for learning collaboratively without a lot of grade stress. Your contribution to your team counts for 2% of your grade.

Labs: Labs are designed to help you learn to program in C and assembler, and reinforce important concepts from CS 203.  Doing the labs is the best way to prepare for the lab exams.  Some of our meeting time will be dedicated to working on these labs. We will discuss common issues or interesting observations as the work progresses. Notice that class time will often not be enough to actually complete the lab. This means that you should plan on working on them outside of class. Do not wait until the last day.  Projects will be assigned in CS 203 and graded by the CS 203 instructor, and there will be time to work on the projects during our labs.

Exams: We will have three lab exams based on material in the assigned labs. These exams require you to code your answers and test them.  Exam absences will receive a score of zero for the exam (unless a dean’s excuse is given).

Submission

(back up↑)Submission

For labs and lab exams:

      • All tasks are individual.  No group submissions.
      • All submissions should be made on the Moodle Website.
      • Labs assignments are usually due the following Saturday at 11:59 pm.
      • While your labs are not graded, you may be asked to review one or more of them with your instructor.

Intellectual Honesty:

Cheating on the labs is self-defeating, because you will not be prepared for the lab exams.

What is cheating on labs?

      • Sharing code: copying, retyping, looking at, supplying file.
      • Describing code: verbal description of code from one person to another.
      • Helping write code line by line.
      • Searching the web for complete solutions.

What is not cheating on labs?

      • Talking about general concepts, high level design or general C/Linux/Assembler techniques.
      • Lending a hand in finding a bug.
      • I encourage you to collaborate in the two ways mentioned above with your lightweight team.
      • Learning general concepts from the web and applying them to your lab.

All lab exams must be your own, independent work without help from any person or help site by way of any media such as in person consultation, text messages, video or audio calls.

Statement: All students are expected to adhere to the college policy on academic honesty as listed in the Student Handbook.

“To maintain the scholarly standards of the College and, equally important, the personal ethical standards of our students, it is essential that written assignments be a student’s own work, just as is expected in examinations and class participation. A student who commits academic dishonesty is subject to a range of penalties, including suspension or expulsion. Finally, the underlying principle is one of intellectual honesty. If a person is to have self-respect and the respect of others, all work must be his/her own.”

 

Grading

(back up↑)Grading

Graded Material:
The lab grade is worth 40% of the overall course grade.  It is based on the materials listed below graded on a 100 point scale, with each item contributing a specified percentage to the overall score.

Participation 2%
zyBooks C assignments and other homework 5%
Lightweight Team Participation 2%
Lab Exams (averaged) 91%

Grading Scale:
Your final grade be assigned in CS 203 using the standards in that syllabus.  Your numerical grade in this lab counts for 40% of the CS 203 grade.

Assignment Grading:
Your submitted programs for labs will not be graded; however, lateness of submission will be viewed with concern and discussed with you.  By this point in your programming career, you should be able to identify when you don’t understand something and need help.  Wondering if you are on the right track about something?  Facing a roadblock?  Make an appointment, and let’s talk about it.  Your lab exams will be graded based on:

      • Correctness: The program behaves according to the requirements explained in the exam question for all possible cases.
      • Good Style: The program is properly commented and follows standards discussed in the zyBook, for example, it has correct spacing and indentation. Naming standards are followed.
      • Good Design: Elements of good design will be discussed during our lab meetings.  At a minimum, the program must be properly decomposed into pieces in different files.

Tentative Schedule

(back up↑)Tentative Schedule*

 
Wk. Dy. Date Topic
Readings
(Z: Zybooks)
Assignments
1 T 8/18
Introduction. Working in Linux.  Object Oriented vs. Procedural Programming.
 
Lab 1: ssh, gcc, gdb.  Due 8/22, 11:59 pm
R 8/20
C Programming
Z: Selected Readings on Variations from Java in the Intro to C Assignment
2 T 8/25
Pointers and Debugging Memory Errors
Z: Selected Readings on Pass by Reference and Using Pointers in Pointers Assignment
Lab 2: Pointers.  Due 11/29, 11:59 pm
R 8/27
I/O in C
Z: Input/Output
3 T 9/1
Bit Manipulations
Lab 3: Bit Manipulations. Due 9/5, 11:59 pm.
R 9/3
More Bit Manipulations
 
4 T 9/8
Intro to Assembler
Lab 4: Learning Assembler.  Due 9/12, 11:59 pm.
R 9/10
Beginning Debugging for Assembler Programming
 
5 T 9/15
C Structs, Typedefs
Z: Readings in the C Structs Assignment

 

Lab Exam on Weeks 1-3: 9/14.

Lab 5: C Structs and Typedefs.  Due 9/19, 11: 59 pm.

R 9/17
Structs, Pointers, Arrays and Functions
6 T 9/22
Function Pointers
Additional readings on function pointers as assigned in class.
CS 203 Midterm 1, 9/24.
Lab 6: Function Pointers. Due 9/26, 11:59 pm.
R 9/24
Abstraction, Advanced Casting in C
7 T 9/29
Assembler Programming
Lab 7: Assembler. Due 10/3, 11:59 pm.
R 10/1
Assembler Debugging
8 T 10/6
Project and Assembler Work
Lab Exam 2: Rest of C, 10/12.

Project 1, Due 10/17.

Lab 8: More Assembler. Due 10/24, 11:59 pm.

R 10/8
Project and Assembler Work
9 T 10/13
Project and Assembler Work
R 10/15
Project and Assembler Work
10 T 10/20
Assembler
 
R 10/22
Assembler
11 T 10/27
Putting It All Together: understanding assembler and using gdb to defuse The Bomb
CS 203 Midterm 2, Week of 11/2.

Lab 9:  The Bomb.  Due 11/7, 11:59 pm.  This is the final lab.

R 10/29
Putting It All Together
12 T 11/3
Putting It All Together
 
R 11/5
Putting It All Together
 
 
13 T 11/10
Project Work
 
Lab Exam  on Assembler Programming, 11/11.
R 11/12
Project Work
 
14 T 11/17
Project Work
 
Project 2, Due 11/21.
R 11/19
Project Work
TBD
FINAL EXAM

*Tentative schedule, subject to change. Check Moodle for the most up to date information.

Additional Information

(back up↑)Additional Information

SM&RT (SMART) Advisor: Advisors in the Sexual Misconduct & Resource Training Program, formerly SASH, seek to prevent sexual and gender based violence and harassment. They also provide services to those who have suffered from such violence or harassment. I am an SMART Advisor, and am available through appointment to assist you or your friends if you experience sexual misconduct.  As a SMART Advisor, I can keep the names of those involved or those consulting me private.

Respect for classmates, colleagues and team members: All students are expected to show respect and courtesy to each other. Mutual respect is a high ideal in academic, business, and personal life. It is central to learning well together. Disagreements over ideas or constructive criticism of someone’s work is in keeping with this ideal. Attacking or disparaging someone is not, and will not be tolerated. In group projects, mutual respect also includes reliably contributing to the project and keeping your commitments to the group.

We follow the College Diversity Statement which says in part:

All members of the College community share a responsibility for creating, maintaining, and developing a learning environment in which difference is valued, equity is sought, and inclusiveness is practiced.

To learn more about how these principles are followed in the computing industry, view the Google video:

Diversity at Google (https://youtu.be/_3RoQRN65AI)

and the eBay video:

Diversity Workshop at eBay, Europe (https://player.vimeo.com/video/159767606)

Proper Usage of Course Materials and Classroom Recordings:  At Lafayette College, all course materials are proprietary and for class purposes only. This includes posted recordings of lectures, worksheets, discussion prompts, and other course items. Reposting such materials or distributing them through any means is prohibited. Such materials should not be reposted or distributed through any means. You must request my permission prior to creating your own recordings of class materials, and any recordings are not to be shared or posted online even when permission is granted to record. If you have any questions about proper usage of course materials please ask me.  Please also be in contact with me if you have any concerns with being recorded during the course.

Privacy: Moodle contains student information that is protected by the Family Educational Right to Privacy Act (FERPA). Courses using Moodle will make student information visible to other students in this class. Online discussions in Moodle or Slack occurring during synchronous class sessions or asynchronous class activities should also remain private and not be shared outside of the course.  Disclosure to unauthorized parties violates federal privacy laws. Please remember that this information is protected by these federal privacy laws and must not be shared with anyone outside the class. Questions can be referred to the Registrar’s Office.

Equal Access: In compliance with Lafayette College policy and equal access laws, I am available to discuss appropriate academic accommodations that you may require as a student with a disability. Requests for academic accommodations need to be made during the first two weeks of the semester, except for unusual circumstances, so arrangements can be made. Students must register with the Office of the Dean of the College for disability verification and for determination of reasonable academic accommodations.

Important Dates:

      • Normal Add/Drop deadline: August 28th
      • Last day to Withdraw (WD): November 2nd
      • Classes end: November 20th
      • Final Exams: November 30th – December 7th

Federal credit hour statement: The student work in this course (CS 203 and its accompanying lab) is in full compliance with the federal definition of a four credit hour course. Please see the Registrars Office Website for the full policy and practice statement.

Credits: Photo of CS 203: Computer Organization Copyright Zyante Inc.