Finite state automata with bounded and unbounded memory. Regular languages and expressions. Context-free languages and grammars. Push-down automata and Turing machines. Undecidable languages. P versus NP problems and NP-completeness.
The study of information visualization as a wide-ranging practice for the creation of complex visual messages. Through sustained project work, students investigate the ways that illustration, text, photography, sound, and the moving image can, in different ways, participate in the process of communicating multi-faceted and multi-dimensional systems of information.
PROGRAMMING LANGUAGE PARADIGMS
Syntax, semantics, concepts, capabilities, and implementation details of several different programming languages, including imperative, functional, object oriented, and logical languages. Comparative advantages and disadvantages of different languages and paradigms.
The design and implementation of operating systems. Study of processes, threads, scheduling, synchronization, interprocess communication, device drivers, memory management, and file systems.
DESIGN & SOCIAL CHANGE
A course that demonstrates power of design to leverage their sense of humanity and ability to fashion a more humane and just world. A survey of an array of visual styles, communications and design projects that date from the turn of the century to the present in the form of artistic posters, non-commercial advertisements, web sites, outreach and political propaganda.
Performance analysis techniques, instruction set design, computer arithmetic, digital design, processor implementation, and memory systems. Performance enhancement using pipelining and cache memory.
Digital Literacy will introduces the practice and history of screen-based interactive design and web publishing using Dreamweaver, Flash, and introductory program languages. Course work covers topics of interaction design, networked culture, and critical analysis of the use of technology in design and our everyday lives.
DATA STRUCTURES AND ALGORITHMS
Algorithm analysis and asymptotic running time calculations. Algorithm design techniques and implementation details. Algorithms for sorting and searching, trees, graphs, and other selected topics.
A course that utilizes the concepts and skills introduced in previous graphic design courses and builds upon these skills to further expand the palette and vocabulary of design. Development of a stronger understanding of typography and the integration of information into a publication format. Projects expand in complexity and focus on the challenges of design publication.
Introduction to the C programming language. Overview of parallel architectures. Programming shared and distributed memory parallel computers. Parallel program performance evaluations.
A course to develop skills in designing, implementing, testing, and debugging large programs; covering topics such as inheritance, multithreading, networking, database programming, and web development.
A technical and conceptual study of graphic design as a wide-ranging practice for the creation, reproduction, and dissemination of visual messages. An exploration of these issues while developing fluency in web development using HTML, CSS, Dreamweaver and Flash.
Focus on the practice, history, and theory of typography. Using design research, independent project work, and collaborative exercises, to arrive at typographic solutions for experimental problems using typography as the primary, if not exclusive, design element.