Computers and Networks
Fall 2014
Purpose
The purpose of this course is to provide you with a basic understanding of how computers do what they do. By studying the fundamental organizing principles of computer systems, you are better able to understand, design, and implement complex systems. Upon successful completion of this course, the computer will no longer seem a “black box” to you.
Contents
The course provides knowledge of computer organization and architecture. Fundamentals of computer networking and data communication will also be provided. The main objectives of this course are the understanding of the major components of a computer system, how these components are interrelated, and their characteristics that affect system performance. The topics covered include computer organization and architecture, data representation, digital logic, assembly language programming, memory systems, input/output systems, system software, network protocols, and network organization.
Objectives
At the completion of the course, you will be able to:
- Understand basic computer architecture and demonstrate use of the associated vocabulary.
- Explain the organization of a computer as levels of virtual machines.
- Describe the operation of the CPU and explain how it is used to execute instructions.
- Write simple assembly language programs.
- Demonstrate knowledge of memory and I/O.
- Demonstrate an understanding of the basics of operating systems software.
- Discuss network architecture standards.
- Describe ISO reference and Internet models.
Textbook
Linda Null and Julia Lobur:
The Essentials of Computer Organization and Architecture.
Jones & Bartlett, 2015 (Fourth Edition).
Form
Lectures and exercises.
Prerequisites
This course requires some programming skills, such as having passed courses in introductory programming, data structures and algorithms, and one programming project.
Exam
30 minutes oral examination with three days of preparation time after receiving an assignment. The exam will focus on the solution of the assignment, and randomly drawn exam questions.
Teacher
Keld Helsgaun, associate professor
Additional information
Resources
Software
- VirtualBox (x86 virtualization software)
- Ubuntu (Linux-based operating system)
- TDM-GCC (GCC compiler for Windows)
- Logisim (Logic design tool)
- Marie Simulator
- IntelliJ IDEA (Java IDE)
- Camera (Memory Tutorial Software)
Readings
- How to Install Ubuntu on VirtualBox (with pictures and video)
- How to Compile and Run a C Program on Ubuntu Linux.
- Learning C from Java
- A Concise Introduction to C
- UNIX Tutorial for Beginners
- Digital Logic and Computer Organization (video lectures)
- Programming from the Ground Up (book on Linux x86 assembly language programming) (pdf, html)
- The Hardware/Software Interface (video lectures)
- Intel® 64 and IA-32 Architectures Software Developer's Manuals
- Debugging Assembly Code with gdb
- What Should an Educated Person Know about Computers (Brian W. Kernighan)