Computers and Networks
Spring 2011
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, 2012 (Third 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.
Teacher
Keld Helsgaun, associate professor
Additional information
Resources
Software
- Marie Simulator
- VirtualBox (x86 virtualization software)
- Ubuntu (Linux-based operating system)
- TDM-GCC (GCC compiler for Windows)
- Logisim (Logic design tool)
- IntelliJ IDEA (Java IDE)
- Camera (Memory Tutorial Software)
Readings
- Learning C from Java
- A Concise Introduction to C
- UNIX Tutorial for Beginners
- Programming from the Ground Up (Book on Linux x86 assembly language programming) (pdf, html)
- 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)