Course notes can be found here.
Computer Science
CSCI 567: Machine Learning
Statistical methods for building intelligent and adaptive systems that improve performance from experiences; Focus on theoretical understanding of these methods and their computational implications.
CSCI 570: Analysis of Algorithms
Explores fundamental techniques such as recursion, Fourier transform ordering, dynamic programming for efficient algorithm construction. Examples include arithmetic, algebraic, graph, pattern matching, sorting, searching algorithms.
CSCI 571: Web Technologies
Advanced study of programming languages with application to the Web. Languages for client-side and server-side processing. Examples taken from: HTML, Java, JavaScript, Perl, XML and others.
CSCI 572: Information Retrieval and Web Search Engines
Examines key aspects of information retrieval as they apply to search engines; web crawling, indexing, querying and quality of results are studied.
CSCI 585: Database Systems
Database system architecture; conceptual database models; semantic, object-oriented, logic-based, and relational databases; user and program interfaces; database system implementation; integrity, security, concurrency and recovery.
ITP 485: Programming Game Engines
CSCI 420: Computer Graphics
Computer graphics, OpenGL, 2D and 3D transformations, Bzier splines, computer animation, rendering including ray tracing, shading and lighting, artistic rendering, virtual reality, visualization.
CSCI 401: Capstone Design and Construction of Large Software Systems
Group project with an outside stakeholder to develop real-world software solutions to large-scale problems. Topics include software engineering, professional preparation, and recent computer science research.
ITP 380: Video Game Programming
- Gained an understanding of core game systems (including rendering, input, sound, and collision/physics)
- Developed a strong understanding of essential mathematics for games.
- Written several functional games in C++ individually.
- Learned critical thinking skills required to continue further study in the field.
CSCI 360: Introduction to Artificial Intelligence
Concepts and algorithms underlying the understanding and construction of intelligent systems. Agents, problem solving, search, representation, reasoning, planning, machine learning.
CSCI 356: Introduction to Computer Systems
- Translate bit strings to numbers using unsigned, 2’s complement, and IEEE standard floating point representation systems.
- Reverse engineer machine code and assembly code to a behavioral (high-level) descriptions.
- Translate high-level software code to corresponding x86 instruction sequences.
- Assess the cache performance of a system given its memory/cache specifications and a specific address trace.
- Identify various software vulnerabilities and how they may be exploited.
- Manually simulate address translation as a means of understanding hardware and software components that do likewise.
- Experiment to determine efficient storage (specifically heap memory) allocation strategies.
- Organize code and use compiler settings to achieve enhanced performance on specific processor architectures.
CSCI 350: Introduction to Operating Systems
Basic issues in concurrency, deadlock control, synchronization scheduling, memory management, protection and access control, inter-process communication, and structured design. Laboratory experiences with Unix-like operating system.
CSCI 310: Software Engineering
Introduction to the software engineering process and software lifecycle. Covers project management, requirements, architecture, design, implementation, testing, and maintenance phase activities in team based projects.
ITP 303: Full-Stack Web Development
- Students will build a complete web application from scratch utilizing core web technologies.
- Students will:
- Create static, responsive web pages using HTML and CSS
- Implement interactivity on web pages using vanilla JavaScript
- Design databases
- Write SQL queries to create, retrieve, update and delete records from databases
- Identify advantages of using web frameworks and libraries such as Bootstrap, jQuery, and Laravel
CSCI 270: Introduction to Algorithms and Theory of Computing
- Greedy Algorithms
- Divide & Conquer Algorithms
- Dynamic Programming
- Introduction to the Theory of NP-Completeness and Computability theory
- Algorithms for Flows and Cuts
CSCI 201: Principles of Software Development
- The ability to understand software engineering in terms of requirements, design, and implementation
- The ability to produce a software design based on requirements
- The ability to produce software, including graphical user interfaces, from a design
- The ability to write multi-threaded programs
- The ability to apply a software engineering process to a large software project
- The ability to use Java in writing programs
- The ability to work effectively on a team
CSCI 170: Discrete Methods in Computer Science
- Pigeon-Hole Principle
- Basic Proof Techniques
- Sets, Functions, Relations
- Induction, Strong Induction, Structural Induction
- Order Notation
- Runtime Analysis
- Logic, Applications, Proofs
- Graphs and Proofs, Spanning Trees, Connectivity, Graph Algorithms
- Counting
- Discrete Probability, Conditional Probability, Bayes’ Theorem, Random Variables
CSCI 104: Data Structures and Object Oriented Design
- Ability to choose appropriate and efficient data structures and algorithms to solve a problem.
- Ability to compare data structures and algorithms for efficiency using algorithm analysis and experiments.
- Ability to apply algorithm analysis and knowledge of discrete mathematics to evaluate algorithms and data structures.
- Ability to implement and use linear data structures, including stacks, queues, lists.
- Ability to implement and use search structures and algorithms including binary search, search trees, and hash tables.
- Ability to use and implement search data structures, including search trees and hash tables.
- Ability to use and implement priority queues.
- Knowledge of and ability to implement sorting algorithms and compare their performance analytically and empirically.
- Understanding of graphs and their representations; ability to implement graph search using BFS, DFS, and Dijkstra’s Algorithm.
- Ability to write recursive functions and understand when recursion is appropriate to a problem.
- Ability to write readable and maintainable code.
CSCI 103: Introduction to Programming
- Develop simple algorithms to solve computational problems.
- Implement key algorithms within the field.
- Write computer programs using conditional and iterative structures, and functional decomposition.
- Perform functional decomposition and trace recursive solutions.
- Select an appropriate basic data structure (e.g. arrays) and access methods (e.g. pointers).
- Determine the computational complexity of simple algorithms.
- Apply basic object-oriented principles.
- Create programs that utilize input/output to perform data analysis.
CSCI 109: Introduction to Computer Science
Understand Computing:
- as a discipline including its subareas, and their relationship to each other
- as a body of knowledge including its principal abstractions, structure, and fundamental contributions
- as a domain of science/engineering including information and its transformation
EE 109: Introduction to Embedded Systems
- Understand how digital systems represent information
- Understand the execution model of a modern computer system
- Design and implement combinational logic circuits
- Design and implement sequential logic circuits and FSMs
- Utilize a microcontroller to sense and activate digital signals
- Utilize a microcontroller to perform analog-to-digital and digital-to-analog conversion
- Use state machines as a system design tool
- Write interrupt-driven and timer-driven programs
- Design a non-trivial embedded project
Applied Mathematics
MATH 225: Linear Algebra and Linear Differential Equations
- Matrices
- Linear spaces
- Linear maps
MATH 229: Calculus III for Engineers and Scientists
- Vectors and the Geometry of Space
- Partial Derivatives
- Multiple Integrals
- Vector Calculus
MATH 407: Probability Theory
- Emphasize indicators and expectations
- Basic discrete distributions (Bernoulli, Binomial, Geometric, Poisson), with additional material including Stirling’s formula formula, entropy (exponential growth/decay rates)
- Generating functions and some Huffman coding
- Second moments, variance, Bayes’s Theorem
- Basic continuous distributions (Uniform, Exponential, Normal) and the change of variables relation arising when a smooth function is applied to a random variable having a density
- Basic Poisson process
- Apply the Central Limit Theorem without proof
MATH 408: Mathematical Statistics
This is an upper-division undergraduate mathematical statistics course that introduces the basic mathematical properties of statistical methods for data analysis including:
- parametric estimation
- hypothesis testing
- least square estimation
- analysis of variance
- analysis
of categorical data
MATH 445: Mathematics of Physics and Engineering II
Vector field theory; theorems of Gauss, Green, and Stokes; Fourier series and integrals; complex variables; linear partial differential equations; series solutions of ordinary differential equations.
MATH 425A: Fundamental Concepts of Analysis
The real numbers, elements of set theory, metric spaces and basic
topology, sequences and series, limits, continuity, differentiation, integration, sequences and series
of functions, uniform convergence.
topology, sequences and series, limits, continuity, differentiation, integration, sequences and series
of functions, uniform convergence.
MATH 458: Numerical Methods
Rounding errors in digital computation; solution of linear algebraic systems; Newton’s method for nonlinear systems; matrix eigenvalues; polynomial approximation; numerical integration; numerical solution of ordinary differential equations.
MATH 432: Applied Combinatorics
Mathematical induction, counting principles, arrangements, selections, binomial coefficients, generating functions, recurrence relations, inclusion-exclusion, symmetric groups, graphs, Euler and Hamiltonian circuits, trees, graph algorithms; applications.
MATH 430: Theory of Numbers
Introduction to the theory of numbers, including prime factorization, congruences, primitive roots, N-th power residues, number theoretic functions and certain diophantine equations.