Skip to content Skip to main navigation Report an accessibility issue


Below is a list of courses taught by Prof. Michael W. Berry in the fields of computer science, electrical engineering, and mathematics.

Computer Science

Problem solving and algorithm development. Organization and characteristics of modern digital computers with emphasis on software engineering, building abstractions with procedures and data, and programming in a modern computer language. Includes Level 1 design projects, which require laboratory work.

Contact Hour Distribution: 3 hours lecture and 1 lab.
Grading Restriction: A, B, C, No Credit grading only.
Credit Restriction: Students who have received credit for 140 or 160 may not receive subsequent credit for 102 without consent of instructor.
(RE) Corequisite(s): Mathematics 141 or 147.

Design, analysis, and implementation of fundamental algorithms and data structures, including trees and graphs.

Contact Hour Distribution: 3 hours lecture and 1 lab.
(RE) Prerequisite(s): 140.

Sets, functions, relations, equivalence relations, partial orderings and proof techniques, especially mathematical induction. Application of proof techniques to prove correctness of algorithms. Introduction to basic counting and combinatorics.

(RE) Prerequisite(s): 140 and either Mathematics 142 or 148.

(DE) Prerequisite(s): COSC 160.

Same as COSC 311 with additional honors project.

(RE) Prerequisite(s): 140 and either Mathematics 142 or 148.

(DE) Prerequisite(s): COSC 160.

Counting and combinatorics, with applications to the analysis of algorithms. Introduction to finite automata and regular languages, and to pushdown automata and context free grammars.

(RE) Prerequisite(s): 311.

Language paradigms (procedural, functional, object-oriented, logic), language design and implementation issues, and language issues related to parallelism.

(RE) Prerequisite(s): 302.

The design, analysis, and implementation of numerical algorithms for solving problems in science and engineering. Emphasis on program design, including data structures, computational complexity, scientific computing environments, and high-performance software packages.

Credit Restriction: Students may not receive credit for both 370 and Mathematics 371.
(RE) Prerequisite(s): 140 and Mathematics 251.

Same as 370 with additional honors project.

Credit Restriction: Students may not receive credit for both 377 and Mathematics 371.
(RE) Prerequisite(s): 140 and Mathematics 251.

Frontiers of computer science technology and research. Students write a senior thesis. Writing-emphasis course.

Registration Restriction(s): Minimum student level – senior.

Properties of finite automata/regular sets and push-down automata/context-free languages. Countability, diagonalization, and undecidability. Complexity, including the classes P and NP, NP-completeness, and reduction techniques.

(RE) Prerequisite(s): 312.

Will focus on understanding the statistical structure of large-scale (big) datasets using machine learning (ML) algorithms. We will cover the basics of ML and study their scalable versions for implementation within distributed computing frameworks. We will pursue ML techniques such as matrix factorization, convex optimization, dimensionality reduction, clustering, classification, graph analytics and deep learning, among others. We will emphasize algorithmic development for big data mining in three different, but general scenarios: (1) when available memory is extremely large; (2) when available memory is small, but can be distributed across a cluster (e.g., cloud-like environments); and (3) when the available memory is small and data has to be analyzed “in-situ” or “online” (e.g., streaming environments). The course will be project driven with source material from a variety of real-world applications. Students will be expected to design, implement and test their ML solutions.
Recommended Background: Machine Learning.

An exploration of the central issues in computer architecture: instruction set principles and design, memory hierarchies (cache and main memories, mass storage, virtual memory) and design, pipelining, instruction-level parallelism, bus organization, RISC (Reduced Instruction Set Computers), CISC (Complex Instruction Set Computers), multiprocessors, implementation issues, technology trends, architecture modeling and simulation.
Recommended Background: Course work in architecture or machine organization.

Repeatability: May be repeated. Maximum 9 hours.
Registration Restriction(s): Minimum student level – graduate.
Registration Permission: Consent of instructor.

Electrical and Computer Engineering

DC and AC circuits, transients, transformers, motors, and generators.
(RE) Prerequisite(s): Mathematics 231.


First course emphasizing solution techniques. Includes first-order equations and applications, theory of linear equations, equations with constant coefficients, Laplace transforms, and series solutions.

(RE) Prerequisite(s): 142 or 148.

Honors version of Math 231.

(RE) Prerequisite(s): 148.

Development and application of fundamental algorithms for finding roots of equations, solving systems of linear equations, interpolating, fitting data using least-squares, differentiation, integration, and solving ordinary differential equations.

Credit Restriction: Students may not receive credit for both 371 and Computer Science 370.
(RE) Prerequisite(s): 231; 200 or 251 or 257.
Comment(s): Knowledge of high-level programming language required.

Direct and iterative methods for linear systems. The algebraic eigenvalue problem and the singular decomposition theorem. Newton and quasi-Newton methods for systems of nonlinear equations.

Cross-listed: (Same as Computer Science 571.)
Recommended Background: Courses in advanced calculus and basic numerical analysis.