Computer Science (CS)

CS 120.  Professional Computer Skills.  (3 Credits)  

A comprehensive study of the essentials of software used by professionals, emphasizing applications of spreadsheets to fundamental data organization, presentation, analysis and decision making applications.

CS 140.  Game Programming for Beginners.  (3 Credits)  

For the complete beginner, an introduction to computer programming by writing basic animations and arcade games. Standard programming issues such as language constructs, problem solving and debugging are combined with game specific considerations such as animation, scoring, collision detection, game levels and working with multiple moving objects. The course uses industry-standard software such as Python.

CS 150.  Computers in Society.  (3 Credits)  

An introduction to the use of computing devices and their impact on society. Topics include: how computers work, the history of computing, philosophical issues in computing, the economics of software development, intellectual property issues, privacy and security, applications of computing, legal issues, the digital divide, the role of computing in government, and computer-assisted collaboration.

CS 160.  Introduction to Web Design.  (3 Credits)  

An introduction to creating web pages and sites with XHTML and CSS as well as using site building software and commercial plugin capabilities. This course is designed for students without a background in computer science.

CS 170.  Information Security and Hacking.  (3 Credits)  

An introduction to the principles and concepts of information security and hacking. The course uses real world examples to illustrate attacks on computer systems and networks. Topics include vulnerabilities, threats and attackers, data protection and encryption and the nature of malware. Basic hacking concepts are introduced along with defensive measures and counterattacks.

CS 190.  Computer Science I.  (3 Credits)  

An introduction to software development taught in Python. Topics include control structures, I/O, functions, strings, lists, files, other data structures and basic algorithms that use them. Emphasis is placed on good problem-solving practices, testing and debugging.

CS 191.  Computer Science II.  (3 Credits)  

A continuation of CS 190 taught in C++. Students develop applications of increasing sophistication. Topics include control structures, I/O, functions, strings, arrays, files, objects and classes, elementary searching and sorting algorithms. Emphasis is placed on software engineering and an introduction to object-oriented programming. Prerequisite: CS 190 with a minimum grade of “C-” or score of at least 75% on the Western CS 191 entrance exam or CU Partnership status.

CS 192.  Independent Study.  (1-3 Credits)  
CS 195.  Database Management Systems.  (3 Credits)  

An introduction to the principles and practice of relational database design, implementation and manipulation. Topics include Structured Query Language (SQL), relational models, elementary database design as well as database management with a programming language such as Java. Prerequisite: CS 190 with a minimum grade of “C-”.

CS 197.  Special Topics.  (1-6 Credits)  

Special topics.

CS 220.  Data Analytics.  (3 Credits)  

Introductory knowledge discovery using computational, statistical, and informatics methods. Topics include analysis of any data that is in digital form, including text, symbolic data or image data, and finding patterns in science, the arts, and society. Prerequisite: CS 190 with a minimum grade of “C-” and MATH 140, MATH 141, MATH 151 or an Accuplacer AAF Test score of 245 or above.

CS 235.  Computers Networks.  (3 Credits)  

An investigation of the transmission of data and information between computer systems. Topics include simple data communications, protocols, error control, local-area networks, wide-area networks such as the Internet packet-switching networks, and several networking models. Various data communication hardware and software are also examined. Prerequisites: CS 191 with a minimum grade of “C-”.

CS 250.  Web Applications Development I.  (3 Credits)  

A course studying web site design, focusing on HTML5 and CSS for page structure and style, the embedded JavaS-cript language for interactivity, and a web application server language for database access. The student learns to implement the essentials of a interactive, database driven website. Prerequisite: CS 191

CS 280.  Data Structures.  (3 Credits)  

A continuation of CS 191 taught in C++. Students use the Standard Template Library to solve moderately difficult problems. Topics include multi-dimensional arrays, vectors, stacks, queues, hash maps, associative arrays, linked lists, trees and heaps. Emphasis is placed on object-oriented design. Prerequisite: CS 191 with a minimum grade of “C-”.

CS 292.  INDEPENDENT STUDY.  (1-3 Credits)  
CS 297.  Special Topics.  (1-6 Credits)  

Special topics

CS 303.  Machine Learning.  (3 Credits)  

A study of computer systems that learn. Topics include decision trees, concept learning, neural networks, reinforcement learning, linear and non-linear models, clustering, validation, feature selection, support vector machines and hidden Markov models with applications to the arts and sciences. Prerequisite: CS 220 with minimum grade of “C-”.

CS 310.  Programming Projects with X.  (3 Credits)  

A project-based course focusing on medium-sized projects in a given programming language using tools and environments appropriate to the selected language. Students gain proficiency in the language by doing projects from a variety of subjects such as artificial intelligence, graphics, machine learning, compilers, and Human-Computer Interaction. This course contains individual and group work. May be repeated with a different implementation language. Prerequisite: CS 191 with a minimum grade of “C-.”

CS 317.  Genome Analysis (with laboratory).  (3 Credits)  

This course introduces students to the appropriate mathematical techniques to answer questions about information contained in genetic sequences. These techniques may include dynamic programming, motif similarity, Bayesian models, hidden Markov models, principal component analysis, and clustering. Students use standard genome query tools to annotate genomic DNA. Only one of the following courses, CS 317, MATH 317, or BIOL 317, may be taken for credit. Prerequisites: MATH 151, MATH 213 and CS 190.

CS 320.  Programming Languages.  (3 Credits)  

An investigation of the theory, usage, and implementation of programming languages. Emphasis is on the theoretical basis for programming languages and practical examples of their use. Basic language paradigms are developed: imperative, functional, object-oriented, and logic. Other topics include type systems and language translation. Languages studied include C, C++, Java, Lisp, Haskell, Prolog, and Python. Prerequisite: CS 280 with a minimum grade of C-.

CS 330.  Operating Systems and Architecture.  (3 Credits)  

A study of how hardware and operating systems work in a multiprocessing computer system. The Intel architecture including the instruction set, memory hierarchy, and exception handling are covered. The Windows and Linux operating systems functions and programming interfaces are studied to understand modern computing environments. Prerequisite: CS 191

CS 340.  Computer Graphics.  (3 Credits)  

A presentation of the design and use of computer-graphics systems (hardware and software) and construction of two- and three-dimensional graphics. Applications of computer graphics in business, industry, education, and communications are emphasized. Prerequisite: CS 190 with a minimum grade of “C-.”

CS 350.  Web Applications Development II.  (3 Credits)  

A study of client-server applications designed around the World Wide Web. Students design and implement interactive applications which provide access to centralized resources such as databases and mail servers from web browsers. Students utilize JavaScript and server-based technologies to construct web-based programs that communicate with servers. Technologies such as Ajax, XML, JSON, and commonly used JavaScript libraries are included. Prerequisite: CS 250 with a minimum grade of “C-.”-

CS 360.  System Security.  (3 Credits)  

A study of system level hacking. Topics include workstation and server vulnerabilities, security and protection mechanisms. The nature of system attacks combined with standard intrusion detection systems will demonstrate the challenge of correctly preventing, diagnosing and responding to attacks. Prerequisite: CS 330

CS 365.  Big Data Analytics.  (3 Credits)  

An intensive study of big data and informatics applications for digital data. Topics include text analysis using classic works and social media, numeric analysis using economic and scientific data and symbolic analysis using genomic data. Emphasis is on programming solutions to complex problems. Prerequisite: CS 220 and MATH 151 with minimum grade of “C-”.

CS 370.  Systems Programming in C.  (3 Credits)  

A study of C programming in a UNIX environment. Topics include the C language, the system call interface for file I/O, process management, interprocess communication and threads, command line utilities for file system navigation, file editing, compiling, execution and scripting. Prerequisite: CS 280 with a minimum grade of “C-”.

CS 380.  The Internet of Things.  (3 Credits)  

A hands-on introduction to the theory and programming of wireless embedded systems - the Internet of Things. Topics include sensors, actuators, state machines, scheduling, wireless communications, time synchronization, localization, fault tolerance, and security related to cyber-physical systems. Prerequisite: CS 330 or CS 370 with minimum grade of “C-”.

CS 390.  Software Entrepreneurship.  (3 Credits)  

A hands-on and project-based course on startup entrepreneurship for software technologies. Students develop and test product ideas, identify market segments, develop customer personas, create minimum viable products and pitch their ideas. Prerequisites: CS 250 and CS 280 with minimum grades of “C-”.

CS 391.  Computer Science Seminar.  (3 Credits)  

An advanced topic in computing, selected by the instructor from areas of computer science not usually included in the regular curriculum, conducted in a lecture, seminar or individualized format. Student involvement through presentations is emphasized. May be taken under different topics for a total of three credits. Prerequisite: CS 191 with a minimum grade of “C-.”

CS 392.  Independent Study.  (1-3 Credits)  

A singular investigation into a unique problem agreed upon by the student and the advisor. Independent Studies (CS 192, CS 292, CS 392, and CS 492) may be repeated for a total of up to 12 credits.

CS 397.  Special Topics.  (1-6 Credits)  

Special topics

CS 410.  Systems Analysis and Design.  (3 Credits)  

The fundamental concepts of systems analysis and design are studied in the context of computerized information systems. Topics include high-level system construction tools, system design methodology, data representation languages such as XML, server-based system design, web services, system security, and system description languages such as UML. Also addressed is the human element in system design: working with users and domain experts to develop system requirements, and understanding the challenges of large scale system projects. Each student completes a number of systems design projects during the term. Prerequisite: CS 310 with a minimum grade of C-.

CS 412.  Software Engineering.  (3 Credits)  

An introduction to the fundamental principles of software engineering. Formal software development techniques and high-level software tools are emphasized. Topics include object-oriented design and programming, software testing, quality and formal methods for software design. Prerequisite: CS 280 with a minimum grade of “C-”.

CS 415.  Software Engineering II.  (3 Credits)  

A continuation of study of the software lifecycle. Topics include methods and tools for the implementation, integration, testing and maintenance of large software systems, software development, test environments and quality assurance, team organization and management. Technical presentation methods and practice are emphasized. There is a significant group project. Prerequisite: CS 412 with a minimum grade of “C-”.

CS 435.  Mobile Development.  (3 Credits)  

An introduction to mobile application development using the Android platform. Topics include development tools, the application life-cycle, interfaces, asynchronous tasks, events, data storage and services. Prerequisite: CS 280 with a minimum grade of “C-”.

CS 440.  CS 440 Distributed Computer for Machine Learning and Data Analytics.  (3 Credits)  

A programming intensive introduction to distributed computing with attention to applications in machine learning and data analysis. Topic includes distributed sequential analysis methods, distributed Markov model-based methods, and distributed support vector machine-based methods. Prerequisite: CS 303 or CS 365 with a minimum grade of “C-”.

CS 450.  Ethical Hacking and Malware.  (3 Credits)  

Application of computer hacking principles to determine vulnerabilities in computer systems and to design preventative processes. Each stage of the attack process from reconnaissance to final objective will be used to analyze attack methods and determine the best method to detect and remediate an attack using an incident response process. Prerequisite: CS 330

CS 460.  Network Security.  (3 Credits)  

A study of network and web hacking. Topics include web vulnerabilities, cryptographic tools, web security and protection mechanisms. The nature of network attacks using sample data sets combined with standard intrusion detection systems will demonstrate the challenge of correctly diagnosing and responding to attacks. Prerequisite: CS 235 and CS 330

CS 470.  Algorithms.  (3 Credits)  

A continuation of CS 280 taught in a language such as Python or C++. Students design and develop more complex algorithms. Topics include complexity analysis, advanced sorting and searching, graph algorithms, greedy algorithms, intractability and heuristics. Emphasis is placed on math foundations and algorithm design, testing, and efficiency. Prerequisite: CS 280 with a minimum grade of “C-”.

CS 480.  Computer Science Application Project.  (3 Credits)  

Students develop a comprehensive application project with a supervising faculty member. A summary paper is written or public presentation of the project is made to the CS faculty and students. Prerequisite: 18 credits of Computer Science course work, including nine upper-division credits, and instructor permission.

CS 490.  Workshop in Computer Science.  (1-6 Credits)  

A series of organized meetings dealing with a topic of current interest. Offered periodically in a variety of computer-related subjects. Only three credits of this title can be applied toward a Computer Science Minor.

CS 492.  Independent Study in Computer Science.  (1-3 Credits)  

A singular investigation into a unique problem agreed upon by the student and the advisor. Independent Studies (CS 192, CS 292, CS 392, and CS 492) may be repeated for a total of up to 12 credits.

CS 495.  Senior Project.  (3 Credits)  

A hands-on and project-based course on the design and construction of sizeable software products. Topics include requirements, software architecture, professional tools for design, testing and project management. Students participate in and manage development teams. Prerequisite: CS 412 with a minimum grade of “C-”.

CS 497.  Special Topics.  (1-6 Credits)  

Special topics

CS 499.  Internship or Field Experience in Computer Science.  (1-12 Credits)  

Students participate in a supervised internship or field experience with a cooperating university or corporation, in the computer science field. A summary paper is written or public presentation of the field experience is made before the CS faculty and students, and a review from the supervisor is prepared. Prerequisite: 18 credits of Computer Science course work, including nine upper-division credits, and instructor permission.