teaching

CPSC 413: Computer System Security

Overview of the principles and practice behind analyzing, designing, and implementing secure computer systems. Covers problems that have continued to plague computer systems for years as well as recent events and research in this rapidly evolving field of computer science. Learn to think from the perspective of an adversary; to understand systems well enough to see how their flaws could be exploited, and to consequently defend against such exploitation. Offers opportunities for hands-on exploration of attacks and defenses in the contexts of web applications, networks, and system level software. Also discusses ethical considerations and responsibilities associated with security research and practice. After CPSC 323.

CPSC 112: Introduction to Programming

CS112 is an introductory programming course, using the Java programming language. No prior programming experience is required. By the end of the course, you should be able to write useful Java programs. But the focus of the course is programming concepts, so besides learning how to write cool artifacts you will focus on learning data types (arrays, strings, numbers, lists, queues, stacks, etc.), control structures (conditionals, looping, exceptional handling, recursion, etc.), program analysis (assertions, etc), basic algorithms (sorting, searching, etc.), object-oriented programming (classes, methods, objects, inheritance, polymorphism, interface, etc.), and basic libraries (graphics, digital audio, text processing, etc.).

CPSC 201: Introduction to Computer Science

Introduction to the basic concepts (e.g., algorithms), techniques (e.g., recursion), and applications of computer science, including systems (computers and their languages) and theory (complexity and computability).

CPSC 327: Object-oriented Programming

Object-oriented programming as a means to designing and writing efficient, reliable, modular, and reusable code. Covers core concepts and features of object-oriented languages (classes, inheritance, composition, encapsulation, polymorphism, and exceptions) as well as the use of object-oriented design patterns (iterator, decorator, strategy, adapter, observer, etc.). This course was previously number CPSC 427. After CPSC 223.

CSE 214: Data structures

CSE214 is an introduction to data structures and algorithms, and an extension of programming methodology to data storage and manipulation of complex data sets. Topics include: programming and applications of data structures; stacks, queues, lists, binary trees, heaps, priority queues, balanced trees and graphs. Recursive programming is heavily utilized. Fundamental sorting and searching algorithms are examined along with informal efficiency comparisons.