605.204.83 - Computer Organization

Computer Science
Fall 2024

Description

This course examines how a computer operates at the machine level. Students will develop an understanding of the hardware/ software interface by studying the design and operation of computing system components. In addition, students will program at the assembly language level to understand internal system functionality. Finally, students will become familiar with the machine representations of programs and data, as well as the influence of the underlying hardware system on the design of systems software such as operating systems, compilers, assemblers, and linkers and loaders. Prerequisite(s): EN.605.202 - Data Structures is recommended. Course Note(s): Not for graduate credit. A course in computer organization is needed for admission to the Computer Science or Cybersecurity program. Students who lack this prerequisite can fulfill admission requirements by completing this course with a grade of B– or better.

Expanded Course Description

This course examines the question: "How does a computer work?". It provides the student with an understanding of the hardware/software interface by studying the design and operation of the basic components of computer systems and gives hands-on experience in programming the machine at the assembly language level to expose its internal functionality. In addition, the student will obtain an understanding of the machine representation of programs and data as well as the influence of the underlying hardware system on the design of systems software such as assemblers, linker/loaders, compilers and operating system services. NOTE: Not for Graduate credit.

Instructor

Default placeholder image. No profile image found for Charles Kann.

Charles Kann

ckann@comcast.net

Course Structure

The course materials are divided into sections which will correspond to the various layers of the computer architecture

Course Topics

Binary Numbers
Floating-Point Numbers

Boolean Algebra

Setting up a PI

First Pi Program - I/O Arm Assembly
Introduction to gdb
I/O in ARM Assembly

Basic Programming in ARM Assembly

Operand2

Arm Machine Code

Simple functions and Control Flow in programs

Procedural Programming and Control Structures

Recursive Functions

Array Processing

IC’s and State Programming

Simple CPU

Course Goals

At the conclusion of this course, with practical experience garnered from judicious homework and programming assignments, students will be able describe the layers that exist when running a program, including assembly language, machine code, and then how the machine code is instantiated onto a working computational machine. in taking a program from a high level language, such as C/C++ or Java, and explaining each of these layers students come to realize that a computer can be described mechanistically, that a computer is just a machine. Also by understanding these layers and what is happening at each layer students will be better able to understand how poorly defined boundary interfaces and misunderstanding about what happens at each layer results in bugs and security problems being introduced into programs

Course Learning Outcomes (CLOs)

Textbooks

Material will be provided by the professor.

Other Materials & Online Resources

Each student will need an account on a Raspberry Pi.  An account will be given to you on a Raspberry Pi server, but if you own a Raspberry Pi, any version should work.  You need to use Raspberry Pi OS, and cannot use a 64 bit OS.  


Required Software

Students will need to download the  free software Logisim.  This software will run on both the Macs (with some modifications) and Windows.

Student Coursework Requirements

  1. Quizzes - 25%

  2. Programming assignments - 35%

  3. Final - 25%   
  4. Discussions - 15%

Grading Policy

EP uses a +/- grading system (see “Grading System”, Graduate Programs catalog, p. 10).

Score RangeLetter Grade
100-98 w/ at least 20 points extra credit = A+
97-94= A
93-90= A−
89-87= B+
86-83= B
82-80= B−
79-77= C+
76-73= C
72-70= C−
69-67= D+
66-63= D
<63= F

Course Evaluation

    1. Student Coursework Requirements

There are 3 types of course work associated with this class: discussions, quizzes, and programs. Normally, one type of assignment will be given each week.

Written Assignments

Discussions are topic that I hope will help the student understand the importance of the material.

Quizzes

Quizzes will be given when there is written assignment, which does not have to be turned in and will not count for any points. Quizzes will be given in weeks where the student needs to study to understand a concept, but it really is not possible to assign a written assignment or program. Examples will be understanding Linux commands, understanding of the gdb debugger, etc.


Programs

Programs and homework will be assigned on a weekly basis. It is expected that each week's assignment will take approximately 4–7 hours per week to complete. Programs will be graded on the following basis:





Course Policies

All home, late or otherwise, should be turned in.  However, late homework is subject to a penalty to be determined by the professor.  Multiple late submissions or submissions more than a few days late receive progressively lower grades.  Medical excuses will be considered, but must be validated and in no case should a student fall more than 2 weeks behind in class. Due dates are given on the Canvas Calendar feature.

Late homework will be graded with a penalty of 10% a day for up to 4 days.  The 10% penalty will be taken on the base grade, not the grade the student earns.  For example, if the student received a 75/100 on an assignment that was one day late, the grade will be 65/100, NOT 68/100.  All late home will have a penalty except in super exceptional circumstances.  "I was sick with the Flu/Covid" will not be accepted unless you are admitted to the hospital.

Homework answers will be posted on Friday of the week the homework is due.  Therefore any homework that is more than 4 days late will be given a grade of 50%.

In my experience, students who fall more than 2 weeks behind in a class generally do not do well.  If you fall more than 2 weeks behind in this class, strongly consider withdrawing from the class.  The school will often consider things like medical withdraw or a military deployment and will give a partial/full rebate of tuition.  As I said, please strongly consider this option.

Finally, incompletes in this class will are to be considered a rare exception. I will give an incomplete for this class only for a valid reason, and the student must have completed 80% of the class work (excluding the final) to be considered for an incomplete.  In addition, a schedule for completion must be submitted by the student and agreed to by the professor.  Generally students will be given up to 2 weeks to complete all material in the class.

IMPORTANT!!!!  While 90%+ of you would never consider cheating, and so I hate to mention this, cheating is becoming more rampant lately.  If you do not get outside help on assignments, you can safely ignore the rest of this message.  I have not seen any of this except from students who have used resources outside of class.

    I have found that assignments that have not been done by students most often have some telltale structures which give away that it is not original work.  Therefore no instructions, pseudo instructions, or any type of assembly language that has not been covered in class will be accepted in assignments, quizzes, or tests.  The PUSH and POP pseudo instructions, and the BX instruction, are absolutely disallowed.  Memory such as block storage symbol (bss) memory may not be used.  Your programs must begin at the "main" label.  You must use the gcc compiler for your programs, and must include a makefile with all assignments so I can check that you are doing this.   You must execute a function return from the main. 

    If you follow the structure of programs given in class, none of this will impact you.  The only time I see these issues are when students either get programs from the internet (such as Chegg.com), or get help with their program.  I have never seen a student come across the "PUSH" or "BX" instruction by doing their own research, and if someone did, they would have the good sense to talk to me before using tit.

     If I find anything that is outside of the scope of the material in this class in a students work, the following will hold:
         A - If it is an assignment, the assignment will receive a grade of 0% and the student will have to resubmit a working program that is in accord with the rules stated above.  A working program will receive a grade of 50%.
         B - If a student uses these disallowed instructions or final on the final, a grade of "F" will be recorded for the class.

Academic Policies

Deadlines for Adding, Dropping and Withdrawing from Courses

Students may add a course up to one week after the start of the term for that particular course. Students may drop courses according to the drop deadlines outlined in the EP academic calendar (https://ep.jhu.edu/student-services/academic-calendar/). Between the 6th week of the class and prior to the final withdrawal deadline, a student may withdraw from a course with a W on their academic record. A record of the course will remain on the academic record with a W appearing in the grade column to indicate that the student registered and withdrew from the course.

Academic Misconduct Policy

All students are required to read, know, and comply with the Johns Hopkins University Krieger School of Arts and Sciences (KSAS) / Whiting School of Engineering (WSE) Procedures for Handling Allegations of Misconduct by Full-Time and Part-Time Graduate Students.

This policy prohibits academic misconduct, including but not limited to the following: cheating or facilitating cheating; plagiarism; reuse of assignments; unauthorized collaboration; alteration of graded assignments; and unfair competition. Course materials (old assignments, texts, or examinations, etc.) should not be shared unless authorized by the course instructor. Any questions related to this policy should be directed to EP’s academic integrity officer at ep-academic-integrity@jhu.edu.

Students with Disabilities - Accommodations and Accessibility

Johns Hopkins University values diversity and inclusion. We are committed to providing welcoming, equitable, and accessible educational experiences for all students. Students with disabilities (including those with psychological conditions, medical conditions and temporary disabilities) can request accommodations for this course by providing an Accommodation Letter issued by Student Disability Services (SDS). Please request accommodations for this course as early as possible to provide time for effective communication and arrangements.

For further information or to start the process of requesting accommodations, please contact Student Disability Services at Engineering for Professionals, ep-disability-svcs@jhu.edu.

Student Conduct Code

The fundamental purpose of the JHU regulation of student conduct is to promote and to protect the health, safety, welfare, property, and rights of all members of the University community as well as to promote the orderly operation of the University and to safeguard its property and facilities. As members of the University community, students accept certain responsibilities which support the educational mission and create an environment in which all students are afforded the same opportunity to succeed academically. 

For a full description of the code please visit the following website: https://studentaffairs.jhu.edu/policies-guidelines/student-code/

Classroom Climate

JHU is committed to creating a classroom environment that values the diversity of experiences and perspectives that all students bring. Everyone has the right to be treated with dignity and respect. Fostering an inclusive climate is important. Research and experience show that students who interact with peers who are different from themselves learn new things and experience tangible educational outcomes. At no time in this learning process should someone be singled out or treated unequally on the basis of any seen or unseen part of their identity. 
 
If you have concerns in this course about harassment, discrimination, or any unequal treatment, or if you seek accommodations or resources, please reach out to the course instructor directly. Reporting will never impact your course grade. You may also share concerns with your program chair, the Assistant Dean for Diversity and Inclusion, or the Office of Institutional Equity. In handling reports, people will protect your privacy as much as possible, but faculty and staff are required to officially report information for some cases (e.g. sexual harassment).

Course Auditing

When a student enrolls in an EP course with “audit” status, the student must reach an understanding with the instructor as to what is required to earn the “audit.” If the student does not meet those expectations, the instructor must notify the EP Registration Team [EP-Registration@exchange.johnshopkins.edu] in order for the student to be retroactively dropped or withdrawn from the course (depending on when the "audit" was requested and in accordance with EP registration deadlines). All lecture content will remain accessible to auditing students, but access to all other course material is left to the discretion of the instructor.