Link to Metro State Homepage

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

Courses Descriptions for Computer Science

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

CSI 1300-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 2300-4 Computer Science 2 (4 + 0)

Prerequisite: CSI 1300 with a grade of "C" or better, or permission of instructor

This course, a continuation of CSI 1300, 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 1300 with a grade of "C" or better, or permission of instructor

This course is a study of the internal organization of computing machinery and the hardware elements essential to the computation process. Various forms of computer organization are studied and analyzed. The vehicle for exploration of the computer hardware is Assembly language that provides specific instructions for the direct manipulation of the memory registers and control flags associated with virtually all modern computers.

CSI 3060-4 Computer Architecture and Systems Programming (4 + 0)

Prerequisites: CSI 2300 and CSI 2400 with grades of "C" or better, or permission of instructor

In this course, computer organization concepts are extended to include advanced architectural concepts. These concepts include set associative caches, advanced pipelining concepts for superscalar and superpipelined processors, bus interface concepts, microprogramming concepts, parallel architectures, multiprocessing architectures, memory organization architectures, interrupt architectures, and bus data transfer concepts. Supporting systems programming topics are also covered as a basis for studying operating systems.

CSI 3100-4 Discrete Mathematics (4 + 0)

Prerequisites: MTH 2410 and CSI 2300 with a grade of "C" or better, or permission of instructor

Discrete mathematical structures including sets, digraphs, Boolean algebra, relations, finite state automata, regular languages, and error correction codes are covered along with their applications to areas of computer science.

CSI 3120-4 Organization and Structure of Operating Systems (4 + 0)

Prerequisites: CSI 3060 with a grade of "C" or better, or permission of instructor

This course is an introduction to the design, development, and implementation of modern computer operating systems, including network systems. The topics covered include input/output processors, interrupt handling, system resource management, multitasking, communication between machines and processes, and computer system security.

CSI 3210-4 Principles of Programming Languages (4 + 0)

Prerequisites: CSI 2300 and CSI 3100 with grades 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 reviewed. The design, evaluation, and implementation of programming language processors such as interpreters, compilers, and translators are studied.

CSI 3280-4 Object-Oriented Software Development (4 + 0)

Prerequisite: CSI 2300 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 3300-4 Foundations of File Structures (4 + 0)

Prerequisites: CSI 2300 and CSI 2400 with grades of "C" or better, or permission of instructor

This course explores the fundamental concepts associated with external storage media and the methods of organization, storage, and retrieval of data on peripheral devices. Various file-structuring schemes are compared and contrasted in order to develop an in-depth understanding of the most efficient methods for given situations. Students will gain experience with internal storage management and a wide variety of sequential and random access methods of file organization and structure.

CSI 3310-4 Fundamentals of Database Systems (4 + 0)

Prerequisites: CSI 3100 and CSI 3300 with grades of "C" or better, or permission of instructor

This course is the second in a two-course series on the external organization and retrieval of information. It builds on the base laid in CSI 3300, Foundations of File Structures, by extending the capabilities of the students into the area of developing database management systems. Students will study the three principal models for database organization (relational, hierarchical, and network). They will also be introduced to the major issues in database management systems development and operation. The emphasis will be on the relational model because of its widespread popularity among computer users. Examples will be constructed using the object-oriented paradigm.

CSI 3510-4 Computer Graphics (4 + 0)

Prerequisites: CSI 2300 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 3700-4 Computer Networks (4 + 0)

Prerequisites: CSI 2300 and CSI 2400, both with a grade 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 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 3300 with a grade of "C" or better, COM 2610, PHI 3360, 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 implementors 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 art 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 4300-4 Advanced Data Structures and Algorithm Analysis (4 + 0)

Prerequisites: CSI 3100, CSI 3300 with grades of "C" or better and MTH 3210, or permission of instructor

This course continues the study of data structures begun in CSI 2300. Extensive concentration is placed on the concept of the abstract data type (ADT). A wide variety of abstract data types are studied including linear and nonlinear ADTs. The emphasis is on the design, analysis, and evaluation of efficient algorithms for a wide variety of common computing problems.

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.

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

CSS 1010-3
(CMS 1010) Introduction to Computers (3 + 0)

This course is designed for students who wish to use a microcomputer in their academic pursuits and their career. The student will learn how to use a personal computer with application software featuring word processing, spreadsheets, file management, graphics, electronic communications, and thesaurus/spelling checker. This course also reviews the historical, societal, ethical, and technological aspects of computers. Credit will be granted for only one prefix: CSS or CMS.

CSS 1027-2 BASIC Programming (2 + 0)

Prerequisite: one year of high school algebra or permission of instructor

This is an introductory computer programming course in which the major elements of the BASIC language are taught. Students will write computer programs to solve problems selected from mathematics and other sciences.

CSS 1080-3
(CMS 1080) The World Wide Web, the Internet and Beyond (3 + 0)

This course is for anyone who uses or wants to access the World Wide Web or use the Internet. Students will master a set of basic skills including using electronic mail, logging in to remote computers, obtaining online documents and software, and using a browser like Netscape to search and explore the World Wide Web for information. Students will also learn the fundamentals of web page construction. Credit will be granted for only one prefix: CSS or CMS.

CSS 1247-4 Introduction to Programming: Visual Basic (4 + 0)

Prerequisites: CSS 1010 or equivalent knowledge and satisfaction of the General Studies Level I Mathematics requirement or permission of instructor

This is an introductory computer programming course in which the major elements of Visual Basic are taught. Visual Basic is one of Microsoft's versions of Basic and was created to specialize in easy graphical user interface development. It is an object-based programming language with many characteristics of object oriented programming languages. Students will write programs to solve problems selected from a variety of applications.

CSS 1427-2 Introduction to UNIX (2 + 0)

Prerequisite: CSI 1300 or previous knowledge of a programming language

This course presents fundamental UNIX concepts, including file system organization, standard commands for file manipulation, utility programs, filters, editors, basic shell programming, and remote access using telnet and file transfer commands such as ftp. The course emphasizes skill acquisition to perform common operations on UNIX systems.

CSS 1607-4 Java Programming Fundamentals (4 + 0)

Prerequisites: CSS 1010 or equivalent knowledge and satisfaction of General Studies Level I Mathematics requirement or permission of instructor

This course offers an introduction to programming in the Java programming language. The course will introduce Java applications as well as the basics of Java applets that can be included in a web document. Students will write Java programs and create a web page which includes a Java applet.

CSS 2227-3 The C Programming Language (3 + 0)

Prerequisites: CSI 1300 or CSS 1247 or MTH 1510 or previous knowledge of a programming language, and MTH 1110 or permission of instructor

The course presents a study of the C programming language and its applications in computing with emphasis on the design and development of efficient algorithms. C is one of the currently more popular programming languages because it is particularly well suited to the development of systems software.

CSS 2257-4 The C++ Programming Language (4 + 0)

Prerequisites: CSI 1300 or MTH 1510 or previous knowledge of a programming language, and MTH 1110 or permission of instructor

This course presents a study of the C++ programming language and its applications in computing with emphasis on the design and development of efficient algorithms and object-oriented programming.

CSS 3607-4 Advanced Web Programming: Java and Perl (4 + 0)

Prerequisite: CSI 1300 or CSS 1247 or CSS 1607 or permission of instructor

This course presents programming for the World Wide Web. Topics include server-side CGI programming using Perl as well as programming in the Java programming language. The course will introduce stand-alone Java applications, threads, Java applets that can be included in web documents, building user interfaces using the Java AWT library and computer animation using Java. Students will develop web pages that include forms processed by a CGI program written in Perl, write Java programs and create web pages that include Java applets.

CSS 3707-4 Advanced Multimedia Programming (4 + 0)

Prerequisite: CSI 1300 or CSS 1247 or permission of instructor

This is an advanced course in multimedia programming. The full power of a contemporary multimedia authoring language is explored. Topics include data structures, manipulating text strings and full text editing, advanced control structures and subroutines, file input/output, advanced animation techniques, dynamic data exchange (DDE), object linking and embedding (OLE) and the use of dynamic link libraries (DLL's) as well as methods for handling such multimedia elements as sound, video and animation.


| 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