Computer Science Course Offerings
A listing of offered courses follows with prerequisites. Please note that some courses do have additional fees associated with them. The credit value of each course is represented by the number in brackets.
CS 100, 200, 300, 400, 500 Cooperative Education Program [variable]
These courses are intended for students in the Cooperative Education program. The program is designed to provide the students with an exposure to computer-related problems at commercial computer installations wherein they can apply the skills and concepts they have learned. The courses carry from 1 to 3 credits. The actual number awarded is decided by the faculty coordinator and based upon the level of the students’ involvement. Cooperative education courses may not substitute for CS course requirements in the major. All courses must be taken on a Pass/No Pass basis. Prerequisites:
Sophomore standing and 2.5 GPA.
CS 110 Introduction to Computers 
This course is a broad introduction to the use of computers as tools for creativity, problem solving, communications, and organizing information. Topics include the hardware components of a computer, the fundamentals of operating systems, ethical use of computers, and web creation and information security. Students acquire valuable hands-on skills in four application areas: word processing, spreadsheets, presentation software, and Internet communication software. Previous computer experience is not expected. Not open to students who have completed a higher-level CS course. Laboratory fee.
CS 111 Programming Foundations 
An introductory computer programming course designed for students with no prior programming background. Emphasis will be placed on problem solving and the translation of solutions into a programming language. Topics include data types, input/output, control structures, loop structures, and program modularity. This course may be used to prepare the student with no prior programming experience for CS 114 or as a one-semester exposure to programming. Prerequisites:
(1) Two years of high school algebra with an average grade of at least B and (2) a high school computer course or CS 110. Not open to students who have completed a higher-level CS course. Laboratory fee.
CS 114 Fundamentals of Computing I 
This is the first course of a two-semester introductory sequence, with laboratory, that covers the fundamentals of algorithmic problem solving. The course emphasizes general programming methodology and concepts common to object-oriented and procedural programming languages: algorithms, top-down structured program design, modularity, efficiency, testing and debugging, and user-friendliness. The object-oriented paradigm is covered, including classes, objects, access control, abstraction, and encapsulation. Other topics include organization and hardware, input and output, subprogram units (methods), fundamental data types, reference types, control structures including conditions and iteration, and arrays. Prerequisite: M 110, M 140, or equivalent. Laboratory fee.
CS 115 Fundamentals of Computing II 
A second course, with laboratory, that builds upon the algorithmic problem-solving concepts covered in CS 114. The course emphasizes language-independent, object-oriented programming techniques. It focuses on designing classes for code reuse, cohesion and coupling, polymorphism, inheritance, static and dynamic binding, and other related concepts. Other topics include exception handling, the software life cycle, recursion, sorting and searching algorithms, and an introduction to data structures. Prerequisite: CS 114 (minimum grade of C). Laboratory fee.
CS 211 Architecture and Assembly Language 
Architecture topics to include CPU and ALU design and operation, instruction sets, microcode, cache memory, arithmetic, instruction and data formats. Architectural principles are illustrated with the study of a specific assembly language. Prerequisite:
CS 115. Laboratory fee.
CS 220 Data Structures 
The study of linear lists (stacks, queues); static versus dynamic allocation; garbage collection; sparse matrices; prefix, postfix, and infix formulas; recursion and recursive algorithms; trees (binary and other representations of trees, traversal of trees); hashing; searching; sorting (bubblesort, quick-sort, heapsort, mergesort); analysis of algorithms in terms of time and space complexity; graphs (representation of graphs, topological sorting, reachability, critical path algorithm). Prerequisite: CS 115 (minimum grade of C). Laboratory fee.
CS 275 Introduction to Internet Programming 
This course serves as an introduction to programming models used to generate and support Web-based applications. The course covers markup, presentation, and front-end interactivity concerns through an in-depth examination of current client-side scripting techniques. Other topics include the document-object model (DOM), event-driven programming, form validation, debugging, and asynchronous web processing.
Prerequisite(s): CS 111 or CS 114 (minimum grade of C) or permission of instructor.
CS 320 Concepts of Programming Languages 
Introduction to programming language paradigms, including imperative, functional, object-oriented, logic, and concurrent. Example languages of each paradigm are compared and contrasted. Abstract programming language description is introduced. Prerequisite:
CS 220. Laboratory fee.
CS 330, 331 Studies in Computer Science [3, 3]
Concentrated studies in areas of computer science, such as design and analysis of algorithms, advanced operating systems, database theory, computer architecture, comparative languages, database management systems, computer networks, Internet programming, and software engineering. Prerequisites:
CS 115 and M 221W. Laboratory fee.
CS 340 Formal Languages and Automata 
This course provides an introduction to theoretical computer science. Languages, grammars, and automata will provide a background for a discussion of parsing. Related areas also include recursive definitions, Turing machines, and decidability. Prerequisites:
M 221W and CS 115. Laboratory fee.
CS 351 Introduction to Artificial Intelligence 
This course introduces the basic principles in artificial intelligence research, covering simple representation schemes, problem-solving paradigms, constraint propagation, and search strategies. Areas of application, such as knowledge representation, natural language processing, expert systems, vision, and robotics, are explored. The LISP programming language is also introduced. Prerequisite:
CS 220. Laboratory fee.
CS 355 Computer Networks 
This course provides a solid foundation in the design of a computer network. Topics focus on network standards and standardization bodies, a layered network architecture, circuit and packet switching, streams and datagrams, physical media and network access, media access and LAN addressing, Internet working and routing, and transport layer services. Also presented are application layer protocols used on the Web, file transfer, and electronic mail; and network security, including cryptography, encryption, and authentication protocols. Prerequisites:
CS 114 and CS 211. Laboratory fee.
CS 362 UNIX Internals 
An in-depth study of the UNIX operating system and associated software tools. Topics include UNIX-C interface (standard UNIX subroutines, system calls, C library); writing shell scripts; using UNIX tools (awk, sed, grep, tr, nroff); writing/developing software tools; and system security. It is assumed that the student has a working knowledge of programming in C/C++. Prerequisite:
CS 220. Laboratory fee.
CS 365 Principles of Database Systems 
This course provides a solid background in the theory, design, and programming of database systems, with a focus on relational databases. The relational data model and entity-relationship diagrams will be covered. Other data models, including the object-oriented model, will be presented. The course introduces database query languages, including an in-depth coverage of the Structured Query Language (SQL). Other database topics include storage and indexing techniques, transaction management, and database interface with application programs. Prerequisite:
CS 220. Laboratory fee.
CS 371 Computer Graphics 
An introduction to fundamental aspects of three-dimensional computer graphics, including the implementation of basic graphics algorithms, geometrical transformations and projections, representations of curves and surfaces, lighting models, and graphical interaction. Theory is applied via the development of programs using a graphics package, such as OpenGL or DirectX. Prerequisite:
CS 220. Laboratory fee.
CS 375 Web Services 
This course provides an in-depth exploration of both the use and development of Web Services in modern web architectures. Students gain hands-on experience with the use of existing Web Services including data retrieval technologies like XML, AJAX, JSON, and client-side scripting frameworks. The course also explores the server-side design and implementation of Web Services and web-enabled APIs. Foundational technologies like REST, SOAP, WSDL, XSD, and .Net Remoting are covered along with associated techniques such as server-side code generation, session tracking, data source design, and data security, where appropriate. Prerequisite(s): CS 275. Laboratory fee.
CS 451 Computer Operating Systems 
Characteristics and design of objectives of operating systems. Serial and parallel processes. Deadlock detection, prevention, and avoidance. Scheduling, long and short term. Memory management. Executive multiprogramming and multiprocessor systems. A comparison of major operating systems. Prerequisites: CS 211 or ECE 332, and CS 220. Laboratory fee.
CS 460 Software Development 
This course focuses on the development of large-scale software that is reliable, understandable, and maintainable. Procedural and object-oriented paradigms are used to illustrate design approaches. Students will work in teams and will develop software on at least two platforms. Abilities and knowledge gained in the other computer science courses will be integrated with a series of comprehensive system development projects. Students will be required to present their project work to the class. Project organization, professional standards, and ethics will also be covered. Prerequisite: CS 220 and junior or senior standing. Laboratory fee.
CS 480, 481 Independent Study in Computer Science [1–3]
The study of more advanced computer science topics under the direction of a faculty member. Prerequisites:
Advanced standing and approval of the department.
CS 190, 191, 290, 291, 390, 391, 490, 491 Special Topics in Computer Science [1–4]
Possible topics include those within computer graphics, data communications, formal theory of languages, computer architecture, theory of automata, modeling, simulation, artificial intelligence, and algorithm analysis. Prerequisite:
Permission of instructor.