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.