Skip Navigation

Fall 2012 Courses

CIS 105 Explorations in Computing
Overview of basic ideas and areas of computer science: includes algorithms, hardware, machine organization, programming languages, networks, artificial intelligence, and associated ethical issues.
CIS 110 Fluency with Information Technology
Introduction to information technology (IT), the study of computer-based information systems. Basics of the Internet and World Wide Web. Students create websites using XHTML and CSS.
CIS 111 Introduction to Web Programming
Project-based approach to learning computer programming by building interactive web pages using JavaScript and XHTML. Programming concepts including structured and object-oriented program design.
CIS 122 Intro to Programming and Problem Solving
Computational problem solving, algorithm design, data structures, and programming using a multi-paradigm programming language. Introduces techniques for program design, testing, and debugging.
CIS 210 Computer Science I
Basic concepts and practices of computer science. Topics include algorithmic problem solving, levels of abstraction, object-oriented design and programming, software organization, analysis of algorithm and data structures. Sequence.
CIS 212 Computer Science III
Basic concepts and practices of computer science. Topics include algorithmic problem solving, levels of abstraction, object-oriented design and programming, software organization, analysis of algorithm and data structures. Sequence.
CIS 313 Intermediate Data Structures
Design and analysis of data structures as means of engineering efficient software; attention to data abstraction and encapsulation. Lists, trees, heaps, stacks, queues, dictionaries, priority queues.
CIS 314 Computer Organization
Introduction to computer organization and instruction-set architecture--digital logic design, binary arithmetic, design of central processing unit and memory, machine-level programming.
CIS 323 Data Structures Lab
Programming laboratory. Data structures and object-oriented implementation.
CIS 330 C/C++ & Unix
Practical software design and programming activities in a C/C++ and Unix environment, with emphasis on the details of C/C++ and good programming style and practices.
CIS 407/507 Programming Competition
Repeatable when the topic changes. Opportunity to study in greater depth specific topics arising out of other courses.
CIS 420/520 Automata Theory
Provides a mathematical basis for computability and complexity. Models of computation, formal languages, Turing machines, solvability. Nondeterminism and complexity classes.
CIS 422/522 Software Methodology
Technical and nontechnical aspects of software development, including specification, planning, design, development, management and maintenance of software projects. Student teams complete projects.
CIS 425 Principles of Programming Languages
Syntax and semantics. Scope rules, environments, stores, denoted and expressed values, procedures, and parameters. Definitional interpreters. Types, overloading, parametric polymorphism, and inheritance. Varieties of abstraction.
CIS 432/532 Intro to Computer Networks
Principles of computer network design. Link technologies, packet switching, routing, inter-networking, reliability. Internet protocols. Programming assignments focus on protocol design.
CIS 471/571 Introduction to Artificial Intelligence
Basic themes, issues, and techniques of artificial intelligence, including agent architecture, knowledge representation and reasoning, problem solving and planning, game playing, and learning.
CIS 607 Convex Optimization
Many interesting problems in computer science (and other fields) can be posed as convex optimization problems. In this seminar, you will learn how to recognize those problems and solve them efficiently. We will be following Stephen Boyd's course at Stanford by watching the videos at home and working through problems in class. Videos and other course info are here.
CIS 607 Evolutionary Computation
This course provides the foundations to Evolutionary Computation, emphasizing in the main meta-heuristics used in the field: Genetic Algorithms, Evolutionary Strategies, Particle Swarm Optimization, Differential Evolution, and Compact Genetic Algorithms. These Artificial Intelligence paradigms focus on solving optimization problems using stochastic population-based meta-heuristics. These techniques have been used to solve many engineering problems; some of them will be studied in class. A first programming project will involve developing a Genetic Algorithm (on the language of your choice). On subsequent projects, students may choose to continue their own implementations or use public domain software packages (e.g. ECJ, Evolvica, CILib, ECsPy, etc.)
CIS 607 Internet Socio-economics
In the last years Internet has become the core element of our society. This has made that the evolution of the Internet as well as its different components (e.g. applications, services, architecture) do not depend (exclusively) in technical aspects anymore. Rather, external socioeconomic aspects play a key role in the popularity and evolution of the aforementioned services. In addition, Internet services such as Online Social Networks (OSNs) influences social and economic aspects related to individuals and companies.

Understanding the complex socio-economic interactions between Internet services and the society is fundamental to develop the future Internet and more importantly the future society. Toward this end, researchers have recently started to conduct studies in this area.

This seminar aims to understand, study and discuss the state-of-the-art work developed in the described research topic. As part of this exercise students will practice their oral presentation skills through papers' presentations as well as their critical, creative and discussion skills through papers reviews and discussions.

CIS 607 Software Tools for Scientific Research
This class provides a practical overview of research programming and tools, including use of the University of Oregons local high performance computing cluster, ACISS.
CIS 610 Teaching Effectiveness Seminar
This course is intended:
  • to be taken by all new CIS GTFs
  • to provide an array of strategies to use during your GTF and teaching experience while you are at UO and after you leave
  • to encourage you to become more aware of how you teach and how to teach more effectively
  • to provide a forum in which you can share teaching problems and ideas with other GTFs
CIS 630 Distributed Systems
Principles of distributed computer systems: interprocess communication, distributed file systems, distributed timing and synchronization, distributed programming, transactions, process scheduling, distributed shared memory.
CIS 640 Writing in Computer Research
Students learn to provide and accept constructive criticism of writing samples in a workshop format.
CIT 381 Database Systems
Introduction to database systems, emphasis on database design and access. Database concepts, data modeling, SQL, connecting database to web.