All Classes and Descriptions
Computer Science classes:
CSCA08: Introduction to Computer Science I
A basic introduction to computer science using Python and including learning about control structures, data types, and complexity.
CSCA48: Introduction to Computer Science II
A deeper dive into computer science fundamentals using C programming to illustrate data structures, efficiency, recursion, testing, abstract data types, and starts the conversation on OOP and encapsulation.
CSCB36: Introduction to the Theory of Computation
Introduces the theories behind computer science, including mathematical logic, mathematical induction, proofs of correctness for algorithms, automata, and more.
CSCB09: Software Tools and System Programming
Opens the door to Unix/Linux command line and scripting languages using C and bash. Wrote programs to illustrate pipes and filters, basic network programming, and system processes and calls.
CSC207: Software Design
Software design concepts using Java, including unit testing, refactoring, design patterns, regexs, etc. Also has a large group project using Android Studio to create a mobile games app.
CSCB58: Computer Organization
Design and operation of computers. This includes boolean logic, memory structure, CPU, assembly languages, and instruction execution. Has regular labs and a group project to create a hardware based game.
CSCB63: Design and Analysis of Data Structures
Looks at the design and implemenation of various efficient data structures and abstract types. Dives into amortized complexity, hashing, red-black trees, disjoint sets, and dynamic tables.
CSCC01: Introduction to Software Engineering
Carefully and completely studies the practices used in software engineering. This includes hands-on practice using Agile techniques, code reviews, and software architecture.
CSCC10: Human-Computer Interaction
Emphasizes methodologies of designing and prototyping user interfaces. Includes a group project for researching and evaluating the created app’s UI over many stages of testing.
CSCC24: Principles of Programming Languages
Studies functional programming (e.g. Haskell) to demonstrate definition and analysis in various languages.
CSC336: Numerical Methods
Examines numerical methods in computing and algorithm implementation to solve problems with numerical solutions. Gives an understanding of small error causes in computation, non-linear equations, and accuracy in solutions.
CSCC43: Introduction to Databases
Introduces relational algebra, normal forms, and database design. Teaches SQL concepts through abstraction before writing queries and highlights how integrity constraints can be efficiently used.
CSCC63: Computability and Computational Complexity
Covers computability theory including turing machines, P and NP problems, NP-completeness, and reducability. Teaches students to think abstractly about computability problems and how to solve them.
CSCC73: Algorithm Design and Analysis
An in-depth comprehensive dive into techniques for designing and analysing algorithms. Topics covered include divide-and-conquer, dynamic programming (DP), and linear programming.
CSCC69: Operating Systems
An extremely hands-on course that builds up the mini operating system, Pintos. Consists of 4 increasingly difficult projects that cover bootstrapping, multithreading, virtual memory, and filesystems respectively.
CSCD01: Engineering Large Software Systems
Continues the work of CSCC01 by uncovering the ideas behind designing larger software systems. This course contained a group project which had students work on an open source software. In our case, this was scikit-learn.
CSCD03: Social Impact of Information Technology
Taken in the last year of every computer science degree, this course takes a hard look at the technologies that now exist or that may exist in the future and how they impact society. Topics include safety-critical software, privacy, cyber-crime, mental health, and ethics.
CSC410: Software Testing and Verification
Jumps between coding languages and methods to prove algorithm correctness, formal specification, validation, and code analysis.
CSCD18: Computer Graphics
Details how computer-generated images and videos are created while focusing on ray-tracing, path-tracing, illumination, object manipulation, cameras, and lenses. Builds the ability to create a fully working 3D rendering engine.
CSCD27: Computer and Network Security
Explains how computers and networks function and different processes to make them more secure. This course covers hashing, key management, authentication, network attacks and prevention, as well as social engineering attacks and data integrity.
CSCD54: Technology Innovation and Entreprenurship
This course is paired with CSCD90 to create an entreprenurial idea and bring it to life. D54 specifically puts a spotlight on business models, startup techniques, and financing.
CSCD84: Artificial Intelligence
Theories and algorithms of artificial intelligence through assignments in game playing, decision making with uncertainty, and image recognition. Considers Markov decision processes, neural nets, heuristics, and reinforcement learning.
CSCD90: The Startup Sandbox
This course is paired with CSCD54 to create an entreprenurial idea and bring it to life. D90 specifically focuses on creating and selling the product using written reports, pitches, and a showcase of the final product.
Math classes:
CSCA67: Discrete Mathematics
Focuses on combinatorics, conditional probability, graph theory, and problem-solving skills. Also has a large focus on proof techniques and format.
MATA31: Calculus I
Introduces calculus theories and functions, including differentiability, derivatives, optimization, antiderivatives, continuity, and the applications of each.
MATA37: Calculus II
Follows MATA31 above, diving deeper into integral calculus, Riemann sums, Fundamental Theorm of Calulus, integration techniques, and convergence/divergence of a sequence and series.
MATA22: Linear Algebra I
A conceptual approach to mathematical proofs, and includes matrix algebra, Euclidean n-spaces, linear systems, eigenvalues and vectors, and various theorems.
MATB24: Linear Algebra II
More in-depth from the previous course, introducing inner product spaces, change of basis, and Hermitian matrices. Also includes the least-squares method and an introduction to coding theory.
MATB41: Techniques of Calculus of Several Variables I
A look at partial derivatives in 3D and higher dimensions. Talks about Lagrange multiplies, spherical and cylindrical coordinates, and how the chain rule works.
STAA57: Introduction to Data Science
An introduction to data science using R. This course introduces visualization, sampling, probability, and computational approaches to using real data.
STAB52: An Introduction to Probability
Mathematical models of probability and distribution. Adds a stats background to the computer science and math by talking about the Central Limit Theorem, Weak and Strong Law of Large Numbers, random variables, etc.
Other classes:
PHLA10: Reason and Truth
Focuses on issues of rationality and how we know about the world around us. Includes conversations about the existance of a God, the knowability of reality, and studies texts through the history of philosophy.
EESA06: Introduction to Planet Earth
Explores the composition, structure, and origin of the Earth and its history from the last 4.5 billion years. Explains the current challenges (like global warming) that the world is facing and how human societies are impacting us now.
LINA01: Introduction to Linguistics
Introduces theories and methods in linguistics. Covers semantics, sentence structure, words, and meanings as well as smaller topics relating to other languages.
LINA02: Applications of Linguistics
Continues the theories and methods from LINA01 with a closer focus on how language changes. Covers language acquisition, how the brain processes language, and the sociology surrounding it.
LGGA60: Introductory Standard Chinese I
An introduction to learning Mandarin, using speech, listening, and reading and writing characters. Starts the path to being able to speak and translate Mandarin.
LGGA61: Introductory Standard Chinese II
A further introduction to Mandarin, including speech, listening, reading, and writing characters. Builds on the previous introductory course, LGGA60.
MGTA01: Introduction to Business
Organizes theories and ideas about how businesses are run and how they work. Focuses on the planning and creation of businesses and how they nestle within economical systems.
MUS210: Music in Film
Provides a window from the watcher’s perspective of how music and film influence each other. This class uses varying themes and decades to show how this changes throughout time.
VPAA10: Introduction to Arts and Media Management
Gives an insider view into how media management works and what steps are involved in the management of the arts. Covers not-for-profit, as well as for-profit and enterprise sectors.