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/ |
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! |
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 |
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) | |
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 | ||
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 | ||
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 |
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 |
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) |