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