Link to Metro State Homepage

Academics Admissions Alumni & Friends Campus Life Computing on Campus News, Events & the Arts Faculty & Staff Students

Course Descriptions for Computer Science (CSI)

Computer Science courses use the CSI and CSS prefixes and are taught through the Department of Mathematical and Computer Sciences.

CSI 1050-4 Computer Science 1 (4 + 0)
Prerequisite: permission of department
This is the first course in the computer science core sequence. Students will learn a modern programming language and the basic skills needed to analyze problems and construct programs for their solutions. The emphasis of the course is on the techniques of algorithm development, correctness and programming style. Students are also introduced to the fundamentals of software engineering and the software development life cycle.

CSI 2050-4 Computer Science 2 (4 + 0)
Prerequisite: CSI 1050 with a grade of "C" or better, or permission of instructor
This course, a continuation of CSI 1050, further emphasizes the concepts of the software development cycle and introduces the concept of an abstract data type (ADT). The topics covered include linked-lists, trees, stacks, queues, classes, recursion, and a variety of data representation methods. Further topics in software engineering and programming style as well as algorithms for sorting and searching are included.

CSI 2400-4 Computer Organization and Assembly Language (4 + 0)
Prerequisite: CSI 1050 and EET 2310 with grades of "C" or better, or permission of instructor
This course is a study of the internal organization of computers. Machine level representation of data, digital logic, central processor and memory organization, instruction level architecture, secondary memory organization, interfacing and communication, multiprocessing organization are covered. The vehicle for exploration of the computer hardware is assembly language programming.

CSI 3050-4 Computer Science 3 (4 + 0)
Prerequisite: CSI 2050 with grade of "C" or better, or permission of instructor
This course, a continuation of CSI 2050, includes graphs, digraphs, balanced binary search trees, red-black trees, B-trees, B*-trees, B+-trees, and hashing. Students will write a variety of programs and some of these will include event-driven programming and graphical user interfaces. Two programming languages will be used in this course.

CSI 3210-4 Principles of Programming Languages (4 + 0)
Prerequisites: CSI 3050 with a grade of "C" or better, or permission of instructor
This course traces the evolution of programming languages and identifies and analyzes the contributions made by several significant languages and their successors. Specific issues of programming language implementation such as creation of activation records for block-structured languages and static and dynamic scoping as methods for defining program object visibility are studied in depth. All four of the modern programming language paradigms (procedural, functional, object-oriented, and logical) will be studied.

CSI 3240-2 Introduction to the Theory of Computation (2 + 0)
Prerequisites: CSI 3050 and MTH 3100 with grades of "C" or better, or permission of instructor
This course explores language theory and computability. Language theory includes: regular expressions, regular languages, and finite automata (deterministic and non-deterministic); context-free languages and pushdown automata; and language grammars. Computability includes: Turing machines and their computing power; unsolvable problems; and intractable problems (NP-Completeness).

CSI 3280-4 Object-Oriented Software Development (4 + 0)
Prerequisite: CSI 2050 with a grade of "C" or better, or permission of instructor
This is an upper-division software development class that focuses on the object-oriented programming paradigm. Object-oriented analysis, design, and development will be explored in some depth with emphasis on object definition, abstraction, polymorphism, encapsulation, and inheritance. Abstract class definitions are developed for a number of common objects and data structures, and derivative classes and subclasses are developed from these definitions. Students will develop a thorough understanding of an object-oriented programming language such as C++ or Smalltalk.

CSI 3400-4 Computer Architecture (4 + 0)
Prerequisites: CSI 2050 and CSI 2400 with grades of "C" or better, or permission of instructor
Computer architecture concepts are extended to include advanced architectural concepts based on the quantitative analysis and evaluation of modern computing systems. These include advanced instruction set architecture designs, multilevel and set associative caches, advanced pipelining, out-of-order processors including superscalar and VLIW techniques, microprogramming concepts, multiprocessing architectures, advanced memory organizations, input/output, and network-oriented interconnections.

CSI 3510-4 Computer Graphics (4 + 0)
Prerequisites: CSI 2050 with a grade of "C" or better, MTH 1410, and either MTH 2140 or MTH 3140, or permission of instructor
This course is a survey of graphics hardware and software. The topics covered include raster scan displays, windowing transformation, algorithms for vector generators, clipping, area fill, space transformations in two and three dimensions, perspective viewing methods, and graphical input. Other topics will be chosen from hidden surface processing, curve and surface modeling, fractals and animation. Programming projects will be done using a standard graphics function library. This is a course in the principles of computer graphics; it is not a course in using existing commercial software for artistic design or drafting. Students wanting design or drafting courses should consult offerings of the Art Department.

CSI 3600-4 Operating Systems (4 + 0)
Prerequisites: CSI 2400 and CSI 3050 with grades of "C" or better, or permission of instructor
This course is an introduction to the design, development, and implementation of modern computer operating systems. The topics covered include input/output processing, interrupt handling, system resource management, multitasking, communication between processes, file system implementation, process and thread control, and virtual memory management.

CSI 3700-4 Computer Networks (4 + 0)
Prerequisites: CSI 2050 and CSI 2400 with grades of "C" or better, or permission of instructor
This course provides a comprehensive study of computer networks, from the physical aspects to the high-level application protocols with which most people interact. The software that provides the communication is emphasized. The methods for creating connections, making sure they are error free and in order, performing routing, and creating client/server interactions are discussed.

CSI 3800-2 Fundamentals of Relational Database Systems (2 + 0)
Prerequisites: CSI 2050 and MTH 3100 with grades of "C" or better, or permission of instructor
This is a course in relational database theory. Topics covered include entity-relationship schema, relational algebra, SQL queries, normalization, decompositions of a relational schema that are dependency-preserving and/or lossless.

CSI 4050-4 Algorithms and Algorithm Analysis (4 + 0)
Prerequisites: CSI 3210, CSI 3240, MTH 3210 with grades of "C" or better, or permission of instructor
The emphasis of this course is on the design, analysis, and evaluation of efficient algorithms for a wide variety of computing problems.

CSI 4120-4 Foundations of Artificial Intelligence (4 + 0)
Prerequisite: CSI 3210 with a grade of "C" or better, or permission of instructor
This course includes a study of the theoretical foundations of artificial intelligence, including the algorithms and techniques and programming languages used to design and implement intelligent systems. The topics covered include search strategies, resolution theorem proving, rule-based deduction, expert systems architecture, plan-generating systems, analysis of languages, and machine learning. LISP and PROLOG, the most commonly used AI programming languages, will be covered and used for programming assignments.

CSI 4250-4 Software Engineering Principles (4 + 0)
Prerequisites: CSI 3050 with a grade of "C" or better, COM 2610, PHI 3370, and senior standing, or permission of instructor
This course focuses on the software development life cycle. Special emphasis is placed on the earlier phases in the life cycle that precede the actual writing of the code, and the later phases in which the software is tested and evaluated after it is written. Finally, the post-implementation phases that represent the eighty percent of the life cycle during which the software is evolving as it is in use are studied in depth. Students will perform various role -playing activities in which they represent users and implementers during these phases of the development process.

CSI 4260-4 Software Engineering Practices (4 + 0)
Prerequisites: CSI 4250 with a grade of "C" or better
This course is a continuation of CSI 4250, Software Engineering Principles. Students will work in teams of 4 to 6 and apply the principles to the development of a real-world project. Projects will be solicited from industry and progress will be evaluated in conjunction with industry representatives. (Senior Experience)

CSI 4281-3 Software Requirements (3 + 0)
Prerequisite: CSI 4250 or permission of department
This course develops basic competency in software requirements engineering and management. Students gain knowledge and practical experience with the fundamentals of requirements elicitation, explication, validation, management, and assessment.

CSI 4282-3 Software Development Management (3 + 0)
Prerequisite: CSI 4250 or permission of department
This course provides students with exposure to a broad set of principles and practices affecting the success and failure of software development efforts and productivity of teams involved in such efforts. The role and tasks of the software development manager are explored in detail. Note that this course is specific to software development and is not a general management course (see MGT courses).

CSI 4283-3 Software Testing and Quality Assurance (3 + 0)
Prerequisite: CSI 4250 or permission of department
This course exposes the student to the key concepts and practices in software testing and quality assurance. Topics covered include aspects of software quality assurance relevant to all phases of the software life cycle, alternative approaches to software testing, application of current automated tools, standards, and emerging trends.

CSI 4284-3 Software Product Engineering (3 + 0)
Prerequisite: CSI 4250 or permission of department
This course surveys fundamental topics necessary for successful software product engineering, including usability engineering, software configuration management (SCM), and an overview of legal issues for software engineers.

CSI 4285-3 Best Practices in Software Development (3 + 0)
Prerequisites: CSI 4260 or two of: CSI 4281, CSI 4282, CSI 4283, CSI 4284; or permission of department
This course exposes the student to current best practices and emerging methodologies in software engineering and software product development. Topics are chosen to reflect the current state of the care and practice. (A typical set of such topics includes: software architecture as a discipline, design patterns, eXtreme Programming, recent technology in security, and aspect-oriented programming.)

CSI 4520-1-4 Advanced Computing: Variable Topics (1-4 + 0)
Prerequisite: permission of instructor
This course will include further topics in computer science and its applications. Topics will be chosen from analysis of algorithms, compiler design, simulation, artificial intelligence, or other chosen by the instructor. This course may be repeated for credit under different titles.



| Academics | Admissions | Alumni & Friends | Campus Life | Computing on Campus | Search/Directories |
| News, Events & the Arts | Current Students | Faculty & Staff | Welcome | Metro State Home |

Copyright © Metropolitan State College of Denver