University Program Based On Open Source

Jon “maddog” Hall

Linux International

Trademarks

Linux is a trademark of Linus Torvalds in many countries

Unix is a trademark of X/Open

Times Have Changed

FORTRAN/COBOL

CARDS

No

Graphics (other than ASCII Art)

Networking (other than sneakernet)

Standards

Security Issues

Ethical Issues

What Is A University?

A collection (usually seven or more) of colleges:

College of Engineering

College of Science

College of Humanities

College of Business Administration

College of Home Economics

Etc.

What Is A College?

A grouping of departments to teach a major curriculum:

College of Science

Math Dept

Chemistry Dept

Physics Dept

Computer Science Dept

Colleges (Cont.)

College of Engineering

Chemical

Electrical

Computer

College of Business Administration

Management Information Science

What Is a Course?

Name

Description

Objectives

Test Questions

Books

Illustrative Slides

Illustrative Examples

Former Tests (over time)

What Goes Into A New Course?

Determining what should be taught

Determining objectives

Determining test questions and projects

Finding a book

Determining what needs to be presented and how to present it

Add war stories

Giving and grading tests

Usually jettisoning an old course

Over Time

Accreditation of course and curriculum

Audit done on old tests, projects

Isn't This What Professors Do?

Sure, but they are busy just like everyone else

Teaching

Meetings

Grading

Review

Tutoring

So who has time to develop new courses?

IEEE/ACM

Joint Task Force on Computing Curricula

IEEE Computer Society

Association for Computing Machinery

Computing Curricula 2001

Revised and updated CC 1991 report

Three public drafts for review

Why Use Guidelines on CS Education?

Accreditation easier

Transfer of credits easier

Start students earlier

More to learn

Help eliminate bad habits

Self-teaching

Starting Students Earlier

Basic age 6

Linux age 12

Device Drivers age 15

$40K/year part time – age 16

Simon Rock Sys Admin – age 20

CS Body of Knowledge

Discrete Structures – 43H

Programming Fundamentals – 38H

Algorithms and Complexity – 31

Architecture and Organization – 36

Operating Systems – 18

Net-Centric Computing – 15

Programming Languages - 21

Human-Computer Interaction – 8

Graphics and Visual Computing – 3

Intelligent Systems – 10

Information Management – 10

Social and Professional Issues – 16

Software Engineering – 31

Computational Science - 0

Discrete Structures - 43

DS 1 - Functions, relations and sets (6)

DS 2 - Basic Logic (10)

DS 3 - Proof Techniques (12)

DS4 – Basics of counting (5)

DS 5 – Graphs and Trees (4)

DS 6 – Discrete Probability (6)

Programming Fundamentals (38)

PF1 - Fundamental Programming Constructs – (9)

PF2 - Algorithms and problem solving (6)

PF3 - Fundamental data structures (14)

PF4 - Recursion (5)

PF5 - event-driven programming (4)

Algorithms And Complexity (31)

AL1 - Basic algorithmic analysis (4)

AL2 - Algorithmic strategies (6)

AL3 - Fundamental computing algorithms (12)

AL4 - Distributed Algorithms (3)

AL5 - Basic computability (6)

AL6 - The complexity classes P and NP

AL7 - Automata Theory

Algorithms And Complexity
(Cont)

AL8 - Advanced Algorithmic Analysis

AL9 - Cryptographic algorithms

AL10 - Geometric algorithms

AL 11 - Parallel algorithms

Architecture and Organization (36)

AR1 - Digital logic and digital systems (6)

AR2 - Machine level representation of data (3)

AR3 - Assembly level machine organization (9)

AR4 - Memory system organization and architecture (6)

AR5 - Interfacing and communication (3)

AR6 - Functional organization (7)

Architecture and Organization (36)

AR7 – Multiprocessing and alternative architectures

AR8 – Performance Enhancements

AR9 – Architecture for Networks and Distributed Systems

Operating Systems (18)

OS1 - Overview of operating systems (2)

OS2 - Operating System Principles (2)

OS3 - Concurrency (6)

OS4 - Scheduling and Dispatch (3)

OS5 - Memory Management (5)

OS6 - Device management

OS8 - Security and protection

Operating Systems (18)

OS9 – Real-Time and Embedded Systems

OS10 – Fault-tolerance

OS11 – System Performance Evaluation

OS12 - Scripting

Net-Centric Computing (15)

NC1 - Introduction to Net-Centric computing (2)

NC2 - Communication and Networking (7)

NC3 - Network Security (3)

NC4 - The web as an example of client-server computing (3)

NC5 - Building web applications

NC6 - Network management

Net-Centric Computing (15)

NC9 – Wireless and mobile computing

Programming Languages (21)

PL1 – Overview of Programming Languages (2)

PL2 – Virtual machines (1)

PL3 – Introduction to language translation (2)

PL4 – Declarations and types (3)

PL5 – Abstraction mechanisms (3)

PL6 – Object-oriented programming (10)

Programming Languages (21)

PL7 – Functional Programming

PL8 – Language Translation Systems

PL9 – Type Systems

PL10 – Programming Language Semantics

PL11 – Programming Language Design

Human-Computer Interaction (8)

HC1 – Foundations of Human-computer interaction (6)

HC2 – Building a simple graphical interface (2)

HC3 – Human-centered software evaluation

HC4 – Human-centered software development

Human-Computer Interaction (8)

HC5 – Graphical Human Interface Design

HC6 – Graphical Human Interface programming

HC7 – HCI aspects of multimedia systems

HC8 – HCI aspects of collaboration and communication

Graphics and Visual Computing (3)

GV1 – Fundamental Techniques in Graphics (2)

GV2 – Graphic Systems (1)

GV3 – Graphic Communications

GV4 – Geometric Modeling

GV5 – Basic Rendering

GV6 – Advanced rendering

GV7 – Advanced Techniques

Graphics and Visual Computing (3)

GV8 – Computer Animation

GV9 – Visualization

GV10 – Virtual reality

GV11 – Computer Vision

Intelligent Systems (10)

IS1 – Fundamental Issues in intelligent systems (1)

IS2 – Search and constraint satisfaction (5)

IS3 – Knowledge representation and reasoning (4)

IS4 – Advanced Search

IS5 – Advanced Knowledge representation and reasoning

Intelligent Systems (10)

IS6 – Agents

IS7 – Natural Language processing

IS8 – Machine Learning and neural Networks

IS9 – AI planning systems

IS10 - Robotics

Information Management (10)

IM1 – Information models and systems (3)

IM2 – Database systems (3)

IM3 – Data modeling (4)

IM4 – Relational databases

IM5 – Database query languages

IM6 – Relational database design

IM7 – Transaction processing

Information Management (10)

IM8 – Distributed Databases

IM9 – Physical Database Design

IM10 – Transaction Processing

IM11 – Distributed Databases

IM12 – Physical Database Design

IM13 – Multimedia information and systems

IM14 – Digital Libraries

Social and Professional Issues (16)

SP1 – History of computing (1)

SP2 – Social context of computing (3)

SP3 – Methods and tools of analysis (2)

SP4 – Professional and Ethical responsibilities (3)

SP5 – Risks and Liabilities of computer based systems (2)

SP6 – Intellectual property

Social and Professional Issues (16)

SP7 – Privacy and Civil Liberties (2)

SP8 – Computer Crime

SP9 – Economic issues in computing

SP10 – Philosophical frameworks

Software Engineering (31)

SE1 – Software Design (8)

SE2 – Using APIs (5)

SE3 – Software tools and environments (3)

SE4 – Software Processes (2)

SE5 – Software Requirements and specifications (4)

SE6 – Software Validation (3)

Software Engineering (31)

SE7 – Software Evolution (3)

SE8 – Software Project Management (3)

SE9 – Component Based computing

SE10 – Formal Methods

SE11 – Software reliability

SE12 – Specialized systems development

Computational Science (0)

CN1 – Numerical Analysis

CN2 – Operational Research

CN3 – Modeling and simulation

CN4 – High Performance computing

Two Ways of Structuring Courses

Imperative-first introduction

“Traditional” path of teaching CS

Object-Oriented first introduction

“Up front” courses in object oriented programming and design

A Typical Core Topic

AR3 – Assembly Level Machine Organization (9)

Topics

Basic organization of the von Neumann machine

Control unit; instruction fetch, decode, and execution

Instruction sets and types (data manipulation, control, I/O)

Assembly/machine language programming

A Typical Course (Cont.)

Instruction Formats

Addressing Modes

Subroutine call and return mechanisms

I/O and interrupts

Learning Objectives

Explain the organization of the classical von Neumann machine and its major functional units

A Typical Course (Cont.)

Explain how an instruction is executed in a classical von Neumann machine

Summarize how instructions are represented at both the machine level and in the context of a symbolic assembler

Explain different instruction formats, such as addresses per instruction and variable length vs fixed length formats

A Typical Course (Cont.)

Write simple assembly language program segments

Demonstrate how fundamental high-level programming constructs are implemented at the machine-language level.

Explain how subroutine calls are handled at the assembly level

Explain the basic concepts of interrupts and I/O operations

Note:

It does not ask a student to write an assembly language program.

Assembly Language Resources

Books

The Art of Assembly Language by Randall Hyde (Group West)

Overhead slides

Assembly Language Step by Step: Programming With Dos and Linux by Jeff Duntemann (John Wiley and Sons)

Overhead slides

HOWTO

Code segments

Assembly Language Resources
(Cont.)

Sample programs

Sample test questions

Graded projects and tests

Wiki

IEEE/ACM

Joint Task Force on Computing Curricula

IEEE Computer Society

Association for Computing Machinery

Computing Curricula 2001

ISBN 0-7695-1499-5

Questions?

Jon Hall

2002-08-23T19:01:31