Computer Science (CS)

Western's Computer Science major is designed to provide students with the knowledge and skills for a career in software development, cyber security or further study in graduate school. Our graduates have jobs in software engineering, network administration, web development, database management and information security.

Western's Computer Science students can pursue the 42 credit Standard major, the 57 credit Information Security Comprehensive Emphasis, the 60 credit Software Engineering Comprehensive Emphasis or the 62 credit Scientific Computing Emphasis . The majors share a core of course work in programming fundamentals, database management, web development, algorithms, systems and software engineering. The Standard major requires a minor. The Information Security major requires additional CS course work in computer security topics. The Software Engineering major requires additional CS course work in advanced topics and has a wide range of available electives. The Scientific Computing major requires additional work in applied mathematics.

The main teaching and development languages are Python, C, C++ and Java. Course work covers programming, web development technologies, data science, database management , data structures , algorithms and software engineering. Study is focused on real-world problem solving with emphasis on modem software engineering techniques.

All Computer Science Majors require the 30-credit Computer Science Core. 

All CS 200+ classes require a suitable student owned computer. Specifications are available from the MCS department.

Western also offers a 128 credit partnership program with the University of Colorado (CU) Boulder, in which a student can graduate with a B.S. degree from CU Boulder's College of Engineering & Applied Science (CEAS).

Program Goals

  • Student Will Have Problem Solving Skills.
  • Students Will Have Professional Viewpoints and Skills.
  • Students Will Have Skills with Modern Tools & Paradigms.
  • Students Will Be Agile Learners.
  • Students Will Be Professionally Employable.

Computer Science Courses

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. Or instructor permission.

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- or instructor permission.

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. Or instructor permission.

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- or instructor permission.

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 Java-Script 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 or instructor permission.

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- or instructor permission.

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 190 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- or instructor permission.

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- or instructor permission.

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 or instructor permission.

CS 335.  Theory of Computation.  (3 Credits)  

A study of problem solving using various computational models. Three primary topics will be discussed: automata theory, computability, and decidability. Emphasis will be placed on proof techniques, automata and languages, Turing Machines, decidability, reducibility, time complexity, and complexity classes. Prerequisite(s) CS 280 with a minimum grade of C-, or instructor permission.

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- or instructor permission.

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- or instructor permission.

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 or instructor permission.

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- or instructor permission.

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- or instructor permission.

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- or instructor permission.

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-; or instructor permission.

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- or instructor permission.

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- or instructor permission.

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- or instructor permission.

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- or instructor permission.

CS 425.  Computational Geometry.  (3 Credits)  

A course focused on the subfield of algorithms dedicated to solving problems related to, and involving, geometric objects. We will investigate problems and efficient solutions related to convex hulls, polygon triangulation, Voronoi diagrams, line segment intersections, terrain guarding, range searching, and more. Emphasis will be placed on time complexity and applications to real-world problems. Prerequisite(s): CS 280 with a minimum grade of C-, or instructor permission.

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- or instructor permission.

CS 440.  Distributed Computing for Machine Learning and Data Analysis.  (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-; or instructor permission.

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 or instructor permission.

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; or instructor permission.

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- or instructor permission.

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- or instructor permission.

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.