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 through an exploration of programs like basic arcade games. Consideration given to language syntax, I/O, data, selection and repetition, large data structures and subroutines, as well as problem solving and debugging. This course employs industry-standard software like 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 the basics of the XHTML web page specification language, cascading style sheets (CSS) and the Plone Content Management System (CMS). Students learn to create attractive, professional web pages and websites using XHTML and CSS, including embedded graphics and multimedia. The student also learns to use a CMS for easier webpage implementation, including add-ons such as forums and shopping carts. This course is designed for students without a background in programming and may not be used to satisfy the requirements of the Computer Science Major or Minor.

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. Students develop text, graphical user interface (GUI) and applet web graphical applications using object oriented techniques in Java. Emphasis is placed on good software engineering practices for problem analysis, program design, documentation, testing and debugging.

CS 191.  Computer Science II.  (3 Credits)  

A continuation of CS 190 taught in the Java programming language. Students develop stand alone GUI and console applications and applets of increasing sophistication. Topics include: arrays, objects and classes, encapsulation and inheritance, file management, dynamic data structures, searching, sorting, recursion, stacks and queues, with emphasis on abstraction and implementation and an introduction to algorithm analysis. Prerequisite: CS 190 with a minimum grade of C-.

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

An introduction to the practice and principles of relational database design, implementation and manipulation. Topics include: Structured Query Language (SQL), relational models, Entity-Relationship modeling, security, multi-user databases, transactions, Object Relational Mapping and database administration. Students will design and implement relational database applications of increasing complexity. Prerequisite: CS 190 with a minimum grade of C-; prerequisite or corequisite: CS 191.

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 various networking models. Various data communication hardware and software are also examined. Prerequisites: CS 191 with a minimum grade of C-; MATH 140 or above excluding MATH 209 and MATH 210 or Accuplacer university-level mathematics score of 75 or above.

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

An introduction to 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 195 or instructor permission.

CS 280.  Data Structures.  (3 Credits)  

A survey of advanced data structures and algorithms. Topics include: linear lists, linked lists, arrays, tree, multi-linked lists, hashing, searching, sorting, recursion and analysis of the algorithms that use these structures. Taught in Java. Prerequisites: CS 191 with a minimum grade of C-; MATH 140 or above excluding MATH 209 and MATH 210 or Accuplacer university-level mathematics score of 75 or above.

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 from experience. Classroom exercises include the building of systems that learn and adapt using real-world applications. Topics covered include decision trees, concept learning, neural networks, reinforcement learning, linear and non-linear models, clustering, validation, and feature selection. Prerequisites: CS 190 and MATH 213.

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 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 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 APPL 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

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 385.  Natural Language Processing.  (3 Credits)  

This course is an introduction to the theory and methodology of Natural Language Processing using a wide breadth of machine learning techniques. The field of NLP focuses on giving computers the ability to understand text and spoken words. Topics include, but are not limited to, stemming, lemmatization, parts of speech tagging, parsing, machine translation, and text generation. Prerequisites: MATH 213 and CS 303 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-.

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 420.  Computer Vision.  (3 Credits)  

A hands-on introduction to Computer Vision. Key topics will include image formation, filtering, analysis of images in the frequency domain, feature detection, template matching, stereo vision, motion, and deep learning/convolutional neural networks. The course will utilize modern tools such as the OpenCV computer vision framework and the TensorFlow machine learning framework. Prerequisites: MATH 260 and CS 303 or instructor permission.

CS 421.  Neural Network Engineering.  (3 Credits)  

A study of how to build neural networks for real world applications. This course will cover modern neural network architectures, deep learning, and solution optimizations like pruning and quantization. Students will learn modern frameworks like TensorFlow, and ultimately deploy and test their applications on hardware such as programmable drones or embedded systems. Prerequisites: MATH 260 and CS 303 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-.

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-.

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.