
Computer Science Department
College of Arts and Sciences
Class Offerings:
The following are the Home Pages of my latest offerings of CS350 (in reverse
chronological order).
Overview:
This course is a required junior-level Computer Science course. It
covers the fundamental concepts underlying the design
and implementation of computing systems.
The philosophy underlying the design of this course is that students
should be familiarized with problems that reoccur in software systems,
and should be acquainted with the set of classical algorithms for
solving such problems. In particular, it is important to develop the
ability to recognize standard problems in different wordings and
within unusual context, and match them with appropriate algorithms.
Catalog Description:
Rigorous treatment of invariant concepts, algorithms, and performance
evaluation methods underlying computing systems design. Topics
include modeling and analysis of concurrent processing, computational
resource scheduling and consumption, and performance evaluation
techniques.
Relationship to Other Courses:
Prerequisite Required Courses
- CS-210
- CS-237 (or approval of instructor)
Recommended Follow-up Courses
- CS-410
- CS-552
- CS-455/655
- CS-470
Function in the Curriculum:
As a core undergraduate course, CS-350 does not focus on particular
implementations or specific technologies. On the contrary, it
stresses the fundamental concepts and basic algorithms that have
survived (and are likely to survive) the evolution of computer
software systems in general, and operating systems in particular.
This course is significantly different in purpose and coverage from
CS-210 (Computer Systems). CS-210 introduces computer systems
to sophomores using a hands-on approach by examining the "mechanics"
of modern (or typical) computer operation through exposure to various
interfaces between architecture, compilers, loaders, linkers, and
run-time systems. CS-350 does not focus on a particular interface or
a particular technology, rather it deals with fundamental notions and
algorithms that are common to computing systems in general and
to software systems in particular.
This course is required or recommended for the following advanced courses: CS-552
(Advanced Operating Systems), CS-550 (Advanced Computer Architecture),
CS-551 (Parallel Computing Architectures and Models), CS-455/655 (Computer
Networks), and CS-560 (Databases). In that respect, this course
covers basic notions that we expect students (graduates and
undergraduates alike) enrolling into these classes to have
mastered. For example, it is inconceivable that a student who is
interested in taking a database class, not to have being exposed to
the notion of concurrent processing and mutual exclusion, for example.
Topical Contents:
The topics covered in this class could be grouped under 3 general
themes:
- Performance Analysis and Evaluation
- Scheduling and Resource Management
- Concurrency and Synchronization
Created on: 1997-10-01
Updated on: 2019-01-19
Maintainer: Azer Bestavros
|