College of Computing

Minor in Computer Science

Monitor showing a Linux terminal, while faculty discuss in the background.

A Well-rounded Education

The discipline of computer science encompasses theory, experimentation, and engineering design. This minor will strengthen your creativity, precision, and reasoning ensuring you will be a well-rounded graduate. The skills you will learn are desirable to an employer, and support a breadth of fields from engineering to audio and sound design.

Requirements

Students seeking a minor in Computer Science are required to have the following classes:

CS 1142 - Programming at the Hardware Software Interface

Programming in assembly language and C for students with prior experience in Java. Topics include binary number encodings, instruction set architecture, assembly language programming, and instruction encodings. C programming topics include program structure, preprocessor, arrays, structures, pointers, input/output, dynamic memory management, and linked data structures.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Fall, Spring, Summer
  • Pre-Requisite(s): CS 1122 or CS 1131

CS 2311 - Discrete Structures

Presents fundamental concepts in discrete structures that are used in computer science. Topics include sets, trees, graphs, functions, relations, recurrences, proof techniques, logic, combinatorics, and probability.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Fall, Spring, Summer
  • Pre-Requisite(s): (CS 1121 or CS 1131) and (MA 1135 or MA 1160 or MA 1161)

CS 2321 - Data Structures

Presents fundamental concepts in data structures. Topics include abstract data types (priority queues, dictionaries and graphs) and their implementations, algorithm analysis, sorting, text processing, and object oriented design. A significant programming project is assigned.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Fall, Spring, Summer
  • Pre-Requisite(s): CS 1122 or CS 1131

CS 3141 - Team Software Project

This course introduces software design techniques (e.g., Design-By-Contracts), uses the UML for requirements and design specification, and requires implementation, unit testing and documentation in the context of a significant team project. Other topics: teamwork, user interfaces, social and professional responsibility.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Fall, Spring
  • Pre-Requisite(s): (CS 2311 or MA 3210) and CS 2321

Electives

Select 6 credits from the following courses:

CS 3311 - Formal Models of Computation

Introduction to the theory of formal languages and computation. Topics include regular languages and finite automata, context-free languages and push-down automata, Turing-acceptable languages, Turing machines and the halting problem. Proof techniques and applications, such as parsing, are also treated.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Fall, Spring, Summer
  • Pre-Requisite(s): CS 2311 or MA 3210

CS 3331 - Concurrent Computing

Concepts and techniques in concurrent computing. Topics include: processes and threads, mutual exclusion, semaphores, monitors and condition synchronization, deadlock, safety and liveness, message passing, and concurrent architectures.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Fall, Spring
  • Pre-Requisite(s): CS 1142 or (CS 1141 and CS 1040) and (CS 2311 or MA 3210) and CS 2321

CS 3411 - Systems Programming

Development of robust programs that provide efficient services to system software developers. Topics include: file I/O, process creation and management, linking and libraries, interprocess communication, performance measurement, and socket programming.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Fall, Spring, Summer
  • Pre-Requisite(s): CS 3421

CS 3421 - Computer Organization

Introduction to the logical structure of computers, including the fundamentals of logic design, information storage and manipulation, control, and input/output. Topics include a review of current hardware technology, combinational and sequential logic, arithmetic, datapaths, hard-wired control, interrupts, caches, virtual memory, and an introduction to pipelining.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Fall, Spring, Summer
  • Pre-Requisite(s): (CS 1141 and CS 1040) or CS 1142

CS 3425 - Introduction to Database Systems

This course provides an introduction to database systems including database design, query, and programming. Topics include goals of database management; data definition; data models; data normalization; data retrieval and manipulation with relational algebra and SQL; data security and integrity; database and Web programming; and languages for representing semi-structured data.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Fall, Spring
  • Pre-Requisite(s): (CS 2311 or MA 3210) and CS 2321

CS 3712 - Software Quality Assurance

Practices for ensuring quality through the software process. Topics include: requirements elicitation, analysis and documentation, testing, and quality assurance management.

  • Credits: 3.0
  • Lec-Rec-Lab: (3-0-0)
  • Semesters Offered: Spring
  • Pre-Requisite(s): CS 3141

CS 4130 - Compiler Design and Optimization

Design, theory, and programming language translators and the theory and implementation of optimizers. Topics include: intermediate representations, advanced code generatin, control-and data-flow analysis, advanced compiler optimization, dynamic compilation, global register allocation and instruction scheduling.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Fall, Spring
  • Restrictions: May not be enrolled in one of the following Level(s): Graduate
  • Pre-Requisite(s): CS 4121

CS 4321 - Introduction to Algorithms

Fundamental topics in algorithm design, analysis, and implementation. Analysis fundamentals include asymptotic notation, analysis of control structures, solving recurrences, and amortized analysis. Design and implementation topics include sorting, searching, and graph algorithms. Design paradigms include greedy algorithms, divide-and-conquer algorithms, and dynamic programming.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Fall, Spring
  • Restrictions: May not be enrolled in one of the following Class(es): Freshman, Sophomore
  • Pre-Requisite(s): (CS 2311 or MA 3210) and CS 2321

CS 4611 - Computer Graphics

Introduction to interactive computer graphics. Topics include 3D viewing, 3D transformation, interactive techniques, animation, modeling, lighting, texturing, vertex programs, fragment programs, and graphics algorithms. Requires substantial programming homework.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Fall
  • Restrictions: May not be enrolled in one of the following Class(es): Freshman, Sophomore
  • Pre-Requisite(s): (CS 1141 or CS 1142) and CS 2321 and MA 2330

CS 4710 - Model-Driven Software Development

Focuses on the use of formal models throughout the software development life cycle. Topics include formal specification of requirements, behavioral modeling, automated analysis, architectural styles and design specification.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Spring, Summer
  • Pre-Requisite(s): CS 3311 and CS 3141(C)

CS 4711 - Software Processes and Management

Focuses on the software development process and related management issues. Topics include software process models, the Capability Maturity Model, process tools, use of standards, software maintenance, configuration management, project planning and tracking, team management, and measurement and estimation.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Fall
  • Pre-Requisite(s): CS 3141

CS 4760 - User Interface and Design Implementation

Principles of user interfaces (UI) design and implementation. Topics include: UI theory, design principles, evaluation, and tools. Requires completion of a group project implementing and evaluating a UI.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Spring
  • Pre-Requisite(s): CS 3141

CS 4811 - Artificial Intelligence

Fundamental ideas and techniques that are used in the construction of problem solvers that use Artificial Intelligence technology. Topics include knowledge representation and reasoning, problem solving, heuristics, search heuristics, inference mechanisms, and machine learning.

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Fall, Spring
  • Restrictions: May not be enrolled in one of the following Class(es): Freshman, Sophomore
  • Pre-Requisite(s): CS 2321 and CS 3311

CS 4821 - Data Mining

Data mining focuses on extracting knowledge from large data sources. The course covers data mining concepts, methodology (measurement, evaluation, visualization), algorithms (classification/regression, clustering, association rules) and applications (web mining, recommender systems, bioinformatics).

  • Credits: 3.0
  • Lec-Rec-Lab: (0-3-0)
  • Semesters Offered: Spring
  • Restrictions: May not be enrolled in one of the following Level(s): Graduate
  • Pre-Requisite(s): (CS 3425 or MIS 3100) and (MA 2330 or MA 2320 or MA 2321) and (MA 2710 or MA 2720 or MA 3710)