94.574
Elements of
Computer Systems
(Fall 2000)
Prof. Thomas Kunz
Office: ME 4474
e-mail: tkunz@sce.carleton.ca
phone: 520-3573
http://kunz-pc.sce.carleton.ca/sce574/

   Goals of the Course
Curriculum
Tutorial/survey of computer and software systems for students without formal training in Computer Science or Systems Engineering.
Goals
Give a foundation in computer systems and software organization
Prepare students for other courses offered in the department and for research
Pre-requisites
Working knowledge of a high level language (C, C++ or Pascal)
Some assembler skills
Note: this is not a programming course!

   Resources
Course notes, sold through the Carleton University bookstore
Two recommended books:
Greg W. Scragg, Computer Organization: A Top-Down Approach, McGraw-Hill 1992, ISBN 0-07-055843-4
Leland L. Beck, System Software: An Introduction to Systems Programming (3rd edition), Addison-Wesley Longman 1997, ISBN 0-201-42300-6
Books on reserve in the library

   Topic Outline
1. Classes of systems and their major features
Programming computers:
==================
2. Basics of Computer Architecture
3. Assembler language
4. High level languages and data structures
5. Algorithms and algorithm analysis
System software:
=============
6. Compilers and compilation
7. Operating systems
8. Computer networks (optional)

   Outline (cont.)
1. Classes of systems and their major features
On-line and Transactional
Embedded and Real time (soft and hard)
General purpose
2. Basics of computer architecture
Examples: Pentium and PowerPC
Data models: integers, reals, character sets
Memory and memory access, interrupts, caches, disks
Instructions
3. Assembler language
Main features in assembly languages
Addressing modes
Subprogram calling sequences
Examples

   Outline (cont.)
4. High level languages and data structures
Relationship between C and assembler
Examples of scoping rules
Abstract data types: lists, stacks and trees
OO languages: classes, inheritance, polymorphism
5. Algorithms
Analysis of algorithm complexity
Examples
6. Compilers and compilation
What compilers do and how they work
Grammars

   Outline (cont.)
7. Operating systems
History
Processes and process scheduling
Concurrency: Co-routines and threads
Mutual exclusion
Interprocess communication
Memory management
8. Computer networks (optional)
ISO reference model
Ethernet
Sliding window flow control
Routing, Internetworking

Classes of Software Systems
On-line or transaction processing (TP) systems
Users request and receive information interactively
Usually interact with a Database management system (DBMS)
Usually low on computation, high on data complexity
Decision support and strategic planning systems
Information regarding many aspects of a business are coalesced to help make decisions

Classes of Software Systems (cont.)
Real-time and embedded systems
Receives data from the environment
Returns results sufficiently quickly to affect the environment
Process control systems (manufacturing, refining), Automated Teller Networks (ATM), Telephone switching systems, Hospital patient monitoring systems, operating systems
Distinction from on-line systems is usually because of performance requirements or because responses depend on the system’s state
These systems are typically harder to build than transaction processing systems, they require more analysis and design work
Hard real-time => if a performance deadline is missed, the result can cause human injury or major financial damage

Classes of Software Systems (cont.)
General software products
Database, Compilers,  Code generation tools
Changes are usually incremental, functionality is added from release to release
Need to exploit new technologies as they emerge
For example integration with the Internet
In general:
Embedded/hard real time and real-time require the most analysis and design, and are the most expensive to build
General software products become more and more difficult to modify as they age

   How big are systems?
Examples of system sizes
NORTEL telephone switch 10 Million Lines of Code (Real time/Transaction processing)
size keeps growing: as of Fall 1998, I was given a number of 30 Million Lines of Code by one of the Nortel developers
IBM Canada C++ Compiler Suite 1 or 2 Million Lines of Code depending on how many tools you include (General purpose + support for real time)
Need well organized groups and repeatable development processes to build and maintain such software (Software Crisis, Software Engineering)