CS 239 - Computer Organization - Spring 2018

Instructor:Jeff Miller,321 Fowler, (323)-259-1303

email:

Class Meetings:MWF 11:45 – 12:40, in Johnson 203

Office Hours:Monday, Wednesday: 1:00 – 2:30pm

Or any time you find me in my office with the door even slightly ajar!

Class Webpage:

This is my Oxy webpage. Once here, you will notice a black banner on top of the page. Just below this, you will see a header: Spring 2018 Courses. Under this header you will see: CS 239-Computer Organization. Click here. This will serve as our class webpage, the central source of all information I will provide during the course. Here you will find the course syllabus (READ IT!), many handouts and weblinks (READ THEM), and more. And of course, most important of all: Assignments and Quizzes, complete with due dates! PLEASE check this page often, as it will grow daily.

Text:This semester, out text will be from the up and coming text book provider, Zybooks. They produce texts accesed online for the duration of the semester, at a much lower cost than traditional texts. Rather than require two physical books (in both Java and Python), costing over $300, this is a much more affordable option. To access the text, you must first create an account, pay for the text, and then you will have access to it throughout the semester. To access this, the publisher sends the following instructions:

Sign in or create an account atlearn.zybooks.com
Enter zyBook code:

OXYCOMP239MillerSpring2018
Click Subscribe

Read "How to use zyBooks" located in your zyBooks library

You will also see several handouts and weblinks and resources on our class webpage.

Material Covered:In a rather quirky progression made possible by an error in the construction of the textbook, we will BEGIN in Chater 11 of our text. We will move to the end of the text, and then begin at the beginning and move forward! So … Chapters 11 through 16, then Chapters 1, 2, … and onward. In our journey, we will begin to see that a human and a computer speak different languages, so the first task is always some form of translation. So we will begin with an investigation of number formats, and more generally, data formats. How is an int, a double, a character, an array … stored in memory on your computer? We will see that everything we say to the computer must be translated into some form of binary representation.

Speaking of binary representations of data … how do we work with data in binary form? How do we add, subtract, multiply, divide numbers in binary form? Are there operations other than arithmetic that we can perform on an ordered set of bits? Such as … logic operations? What do the words AND, OR, XOR, NOT mean both logically and bitwise? Are there other logical or bitwise operations? If we were to combine both arithmetic and logical operations, and house this all in one physical unit, would we call it an “Arithmetic Logic Unit”, or ALU?

From here, we will look “inside” the computer and see how it’s structure requires some very specific modes of interaction. The first surprise is that no matter how big and powerful a computer is … it’s still finite. It is essentially a vast, highly organized, collection of a finite number of discrete microscopic elements which can only store two possible values: high voltage and low voltage. Sometimes we refer to these values of “1 or 0”, “On or Off”, “Vcc or Ground”, “5 volts or 0 volts”, or just “Hi or Lo”. So your computer does, and how it does it, is quite different than what humans do and how humans do it! We have to learn how to do things it’s way.

To that end, we must first break down the computer into logical units …each of which has a well defined purpose, and well defined ways of carrying out that purpose. What is a CPU? What is an ALU? What is a register? What is “memory”? For that matter, what are the different types of memory, why are different types needed?What is the difference between ROM, RAM, PROM, EPROM, and Hard Drives? What is a clock, and what is synchronization? Where do programs go? Where does data go? What is I/O? How does my computer talk to the outside world?

Once we understand the computer on the inside, we need to learn how to make each of the components work together, and do so efficiently. So once I open up my brand new fully functional computer from the store, how do I tell it what to do? What commands and instructions can I give it? What sets of commands and instructions (programming languages) should I use, and for what? How does a programming lanauge (software) make the metallic and silicon elements on my computer (hardware) do what I want? Clearly there must be some interaction between hardward and software … and what about firmware?

Are there hierarchys on computers? Like … a program which runs a program which runs a program which runs a program … ? We might recall something similar from our introductory courses where methods call methods call methods. Can memory or other hardware elements have similar hierarchys? Can two processes or two thousand processes run at the same time and is there another process in charge of it all? What is the difference between processes “running in series” and “running in parallel”?

After we answer these questions, we will investigate our computer on a more microscopic scale: the bit level. What components allow us to perform arithmetic and logic operations in hardware, rather than software? What is a resistor, caacity, inductor, voltage source, diode, transistor? How do these support the bitwise OR function, or the bit wise ADD function? And on the bitwise scale, how do we build these components back up to the laptop you see in front of you which contains a trillion or so of these most minute components?

Finally, if time remains, we will continue the topics introduced in the previous paragraph, embarking upon a brief overview of Digital Logic, Digital Logic is one of the fundamental building blocks in the field of Electrical and Computer Engineering. But don’t be alarmed … this is only the briefest of introductions, and then only for the time remaining after our regular topics.

All in all it will be enlightening and fun … and perhaps fast. So don’t fall behind!

Joke du jour: A byte walks up to an address and asks: “Will you take me to the PROM?”

Grading:Grades will be based on the following breakdown:

Homework Problem Sets:35%

Short Occasional Quizzes:20%

One Midterm Exam20%

One Final Exam:25%

Assignments:There will be a number of assignments to help you practice these rather cryptic concepts. You should do every question, and start early. The class is too big to accept a lot of late assignments without Earth Shattering justifications … and Nobody wants to see the Earth get shattered! If you’re confused, please ask. Come to my office, or ask in class. A good rule of thumb is that you should at least have done as much work as needed to know what questions you will have by the class time before the assignment is due.

Help? !Beyond office hours, the Computer Science department has a group of tutors and peer advisors. They will announce their times of availability in class. You should go. Often. Not just to “get answers on your homework”, but so that you can interface with Computer Science students ahead of you. Not only can they help you with assignments, but share their own experience and advice on courses, internships, programs, research opportunities and more!

Quizzes:Quizzes will supplement the asignments. Where an assignment might require you to think through a series of ideas, quizzes will test your immediate and specific master of facts. These will be short, and usually anounced before hand. But you should EXPECT a quiz to occur EVEN without notice on any given day … since one of the goals behind quizzes is to provide incentive for keeping up with the flow of material each day!

A few of MY rules:Below is a list of classroom “best practices” for the student, at least in my course. Some of these seem obvious, others seem nit-picky. They’re policies or procedures that are crucial to making the course run smoothly.

1)Any assignment that you submit MUST have the names of every member of your group (on those occasional where you’re allowed to work together), written prominently on the front page. Your assignment MUST be properly STAPLED.

2)Your computers should come with you to class each day … but only to work on class related things. Hiding behind your laptop interacting with Facebook is unacceptible. This frees you up to try to answer questions in real time when posed in class.

3)Late assignments have points deducted … and I get to deduct whatever number of points I feel is appropriate. Sometimes there is a valid reason for lateness resulting in no penalty. Other times, you might be so late that I’ve already given you a zero! But TALK to me when issues arise and we can work things out!

4)YOU are responsible … for everything. From the text, from my online postings, from every word I speak in class, from every program demonstration. So if you miss something, find out what it is. But it’s best to not miss anything. As a general rule of thumb, if I take the time to write up a handout, a program, an Excel page, etc., I probably think that the contents are worth the time investment, and so should you! So if you see it posted, you should read it!

Finally…

Academic Dishonesty:It’s great for students to work in groups. It’s also ok to “copy” a program as a template and modify it to fit your needs. Most programs are written in this way. I might have a program recently written which “reads in” a character string and capitalizes every character. Later, I might be asked to write a program which reads in character strings and prints them out backwards. Since my first program involves character strings, and at least input and output of character strings, I might copy it and simply modify it’s function rather than starting all over from scratch. This is just efficient. By the way … most of the programs I’ve ever “stolen” and modified in this way, I stole from myself, from an ever growing back of previously written programs. And that’s REALLY not cheating! Having said all this … Copying entire assignments or entire programs for the sake of not having to do the intended work IS cheating. Copying on a test is cheating too. Either can result in failure of the course, suspension from school, or worse. Just don’t do it. Note: according to OXY policy, I’m required to notify the Dean of Students if I even suspect cheating has occurred. Please familiarize yourself with the information on the two links below:

Disability Services:From the Dean of Students -

Students with documented disabilities who are registered with Disability Services are required to present their accommodation letter to the instructor at the beginning of each semester or as soon as possible thereafter. Any student who experiences significant physical or mental impairments may contact Disability Services at (323) 259-2969 to learn about available services and support. More information is available at

Please do not hesitate to contact the Disabilities Services office if you have any questions at all about possible accommodations. Too many students try to “tough it out” on their own and suffer academically for it. This department’s job is simply to “even the academic playing field”. They’re very professional, very helpful, and very confidential.