Programming w/Data Structures

Advanced programming techniques in the Java language focusing on abstract data types. Specific topics include linked structures, recursive structures and algorithms, tree-based structures, and hash tables. Elementary techniques of software engineering, including documentation, coding style, basic testing principles, and informal reasoning about correctness. Weekly programming assignments, discussion section exercises, and multiple exams.

Usability

In this course we examine the important problems in Usability, Human Computer Interaction, User Interfaces, and Human Centered Computing. We will examine elements of HCI history, human information processing capabilities, HCI design, user interface prototyping methods and new applications and directions in human computer interaction.

Web Programming

The World Wide Web was proposed originally as a collection of static documents inter-connected by hyperlinks. Today, the web has grown into a rich platform, built on a variety of protocols, standards, and programming languages, that aims to replace many of the services traditionally provided by a desktop operating system. This course will study core technologies, concepts, and techniques behind the creation of modern web-based systems and applications. This course satisfies the Integrative Experience requirement for BS/BA CMPSCI majors.

Operating Systems

The design and operation of modern computer operating systems. Review of capabilities of typical computer hardware. Topics include command language interpreter (the shell), processes, concurrency, inter-process communication, linking and loading, memory management, transactions, file systems, distributed systems, security, and protection. Programming projects in Java and C.

Operating Systems

The design and operation of modern computer operating systems. Review of capabilities of typical computer hardware. Topics include command language interpreter (the shell), processes, concurrency, inter-process communication, linking and loading, memory management, transactions, file systems, distributed systems, security, and protection. Programming projects in Java and C.

Reasoning Under Uncertainty

Development of mathematical reasoning skills for problems that involve uncertainty. Counting and probability, probabilistic reasoning, Naive Bayes classifiers, Monte Carlo simulation, Markov chains, Markov decision processes, classical game theory, and introduction to information theory.
Subscribe to