Computer Science

A minor in computer science requires a minimum of 18 semester hours

Courses of Instruction

CMP 101: Introduction to Computer Science

Credits 3
A first course in the discipline of computer science with emphasis on expressing ideas in a formal language. Introduces basic programming techniques, data abstraction, and algorithms. Includes discussion of the nature of computation and connections to major areas of computing.

CMP 201: Data Structures

Credits 3

Introduction to linked lists, stacks, queues, maps, trees, binary search trees, graphs, and hashing. Emphasis is on writing readable, efficient, and maintainable code. Object-oriented programming techniques, dynamic memory management, exception handling, and abstract data types are studied. 

CMP 202: Logic and Computing Structures

Credits 3

The nature of the logical foundation of the discipline is emphasized with coverage including propositional and predicate calculus, formal systems and proof, and methods of informal proof. Writing proofs about sets, functions, grammars, trees, and graphs is emphasized with an eye both towards the study of the logic itself as well as a deepening understanding of the structures at hand.

CMP 310: Algorithms

Credits 3

Introduction to the design and analysis of algorithms. Course coverage includes divide and conquer algorithms, dynamic programming, greedy algorithms, back-tracking, branch-and-bound, and classic searching and sorting. Complexity is studied as well and includes order of growth, tractability, P vs. NP, and how to design algorithms for NP-hard problems. 

CMP 320: Models of Computation

Credits 3

Formal languages and automata theory, with an introduction to computability. Course coverage includes deterministic and nondeterministic automata, pushdown automata, regular and context-free languages and grammars, models of computation including the Turing machine, computability, decidability, and the Halting problem. 

CMP 330: Physical Computation

Credits 3

Introduction to the architecture and organization of physical computers. Machine language programming, the design of instruction sets, and software/hardware tradeoffs are emphasized. Digital design topics such as transistors, Boolean algebra, logic gates, functional units, timing, computer arithmetic, and overall system design are studied. Topics include data path and controller design, hazard detection and resolution, dynamic scheduling, the memory hierarchy, parallelization, and application-specific processors. 

CMP 333: Imbedded Systems

Credits 3

Microcontroller-based embedded system design and programming. Topics include basic machine electronics, interface design, and C and assembly language programming for real-time embedded systems. Applications to robotics such as planning, vision, and cybernetics are covered.

CMP 340: The Craft of Coding

Credits 3

Introduction to applications-level software design principles with emphasis on writing efficient, maintainable, and reusable code. Topics include design patterns, debugging, testing, exception handling, recursion, memory management, classes, inheritance, and polymorphism. This is a programming intensive course giving the student experience in a modern object-oriented language.

CMP 355: Cybersecurity

Credits 3

An introduction to the fundamental problems faced in cybersecurity. These include cryptography, hashing, challenges to both, and a few families of general exploits (e.g., stack smashing) used to compromise or gain unauthorized access to a network or computer system. Greater policy discussion as to the use of cyberweapons and the benefits of a third offset strategy vs. the detriment of the proliferation of cyberweapons and loss of privacy will accompany the study of the basic offensive and defensive techniques themselves. 

CMP 375: Computational Biology

Credits 3

An introduction to classic problems encountered when studying biological data in the wake of the high-throughput data generation over the past 20 years. Examples include inference of phylogenetic trees, gene finding, thermodynamic RNA secondary structure prediction, and analysis of mass spectrometric peptide sequence, protein sequence, or glycoconjugate data.

CMP 382: Philosophy of Artificial Intelligence

Credits 3

An investigation of the nature of AI as a technology and a study of what the language of AI can help us say about perennial human questions, such as the nature of mind and reality. The effects of current AI applications on individuals and society will be discussed. Philosophical writing from ancient, medieval, and modern thinkers will be engaged through the lens of the science, mathematics, and engineering of AI. The student’s ability to reflect meaningfully upon and write well about all aspects of AI and computing technology will be developed. 

CMP 393: Topics in Computer Science

Credits 1 Max Credits 3
An elective course on special topics in computer science that are not normally offered. Specific topics may vary. The course may be taken for credit more than once under different titles.

CMP 470: Artificial Intelligence

Credits 3

Overview of basic ideas in artificial intelligence. Coverage includes knowledge representation, classic search techniques, probabilistic reasoning, and neural networks. Modern computer architectures supporting artificial intelligence algorithms are covered. Includes discussion of the nature of intelligence and whether machines can think. Prerequisite: CMP 101 and MTH 113/120

CMP 473: Machine Learning

Credits 3

A course in modern machine learning via deep learning. Topics include statistical estimation, efficient gradient descent of nonlinear functions, convolutional models, attention-based models, and generative models. Emphasis is placed on maintaining a balance between theory and the ability to produce practically efficient implementation of these techniques leveraging GPU acceleration within a leading deep learning development framework. Practical implementation details also consider techniques for avoiding local optima and improving generalization.

CMP 477: Evolutionary Computation

Credits 3

Theory and application of stochastic, population-based, general-purpose problem solving algorithms inspired by natural evolution. Includes coverage of genetic algorithms, swarm intelligence, evolutionary algorithms, genetic programming, and multi-agent simulations. Applications to problems in science, engineering, mathematics, business, and the humanities are studied. Prerequisite: CMP 101 and MTH 113/120