Computer and Information Science

Printer-friendly versionPrinter-friendly version

Eugene M. Luks, Interim Department Head

541-346-4408
541-346-5373 fax

120 Deschutes Hall
1202 University of Oregon
Eugene OR 97403-1202

www.cs.uoregon.edu

Faculty

Zena M. Ariola, professor (programming languages, lambda calculus, logic). BS, 1980, Pisa; PhD, 1992, Harvard. (1992)

David L. Atkins, adjunct associate professor (programming languages, software engineering). BA, 1972, College of Wooster; PhD, 1979, Kansas. (2001)

Kevin R. B. Butler, assistant professor (storage and systems security, network security). BS, 1999, Queen’s University at Kingston (Ontario); MS, 2003, Columbia; PhD, 2010, Pennsylvania State. (2010)

John S. Conery, professor (computational biology, parallel processing). BA, 1976, California, San Diego; PhD, 1983, California, Irvine. (1983)

Dejing Dou, associate professor (artificial intelligence, information integration, data mining). BE, 1996, Tsinghua; MS, 2000, PhD, 2004, Yale. (2004)

Stuart Faulk, research associate (software engineering, software product lines, requirements engineering). BA 1973, Cornell; PhD, 1989, North Carolina, Chapel Hill. (1989)

Stephen F. Fickas, professor (requirements engineering, software engineering, wearable ubiquitous computing). BS, 1971, Oregon State; MS, 1973, Massachusetts; PhD, 1982, California, Irvine. (1982)

Kathleen Freeman Hennessy, instructor; director of undergraduate studies. BS, 1982, Bucknell; PhD, 1993, Oregon. (2011)

Michael Hennessy, senior instructor. BS, 1982, MS, 1984, Oregon. (1984)

Anthony J. Hornof, associate professor (human-computer interaction, cognitive modeling, eye tracking). BA, 1988, Columbia; MS, 1996, PhD, 1999, Michigan. (1999)

Jun Li, associate professor (computer and network security, network architectures and protocols, distributed systems). BS, 1992, Peking; ME, 1995, Chinese Academy of Sciences; MS, 1998, PhD, 2002, California, Los Angeles. (2002)

Daniel Lowd, assistant professor (machine learning, data mining, artificial intelligence). BS, 2003, Harvey Mudd College; MS, 2005, PhD, 2010, Washington (Seattle). (2009)

Allen D. Malony, professor (parallel processing, performance evaluation, neuroinformatics). BS, 1980, MS, 1982, California, Los Angeles; PhD, 1990, Illinois, Urbana-Champaign. (1991)

Andrzej Proskurowski, professor (algorithmic graph theory, models of communication networks). MS, 1967, Warsaw Technical; PhD, 1974, Royal Institute of Technology, Stockholm. (1975)

Reza Rejaie, associate professor (computer networks, multimedia networking, network measurement). BS, 1991, Sharif University of Technology; MS, 1996, PhD 1999, Southern California. (2002)

Kent A. Stevens, professor (computational biomechanics, three-dimensional visualization). BS, 1969, MS, 1971, California, Los Angeles; PhD, 1979, Massachusetts Institute of Technology. (1982)

Eric D. Wills, instructor. BS, 2000, MS, 2002, PhD, 2008, Oregon. (2010)

Christopher B. Wilson, associate professor (computational complexity, models of computation). BS, 1978, Oregon; MS, 1980, PhD, 1984, Toronto. (1984)

Michal Young, associate professor (software engineering, software test and analysis). BA, 1983, Oregon; MS, 1985, PhD, 1989, California, Irvine. (1997)

Emeriti

Sarah A. Douglas, professor emerita. AB, 1966, California, Berkeley; MS, 1979, PhD, 1983, Stanford. (1983)

Arthur M. Farley, professor emeritus. BS, 1968, Rensselaer Polytechnic Institute; PhD, 1974, Carnegie-Mellon. (1974)

Virginia M. Lo, associate professor emerita. BA, 1969, Michigan; MS, 1977, Pennsylvania State; PhD, 1983, Illinois, Urbana-Champaign. (1984)

Eugene M. Luks, professor emeritus. BS, 1960, City University of New York, City College; PhD, 1966, Massachusetts Institute of Technology. (1983)

The date in parentheses at the end of each entry is the first year on the University of Oregon faculty.

Participating

David W. Etherington, On Time Systems

Scott H. Frey, psychology

Matthew L. Ginsberg, On Time Systems

Yannis Smaragdakis, University of Massachusetts, Amherst

Jeffrey Stolet, music

Joseph W. Thornton, biology

Don M. Tucker, psychology

General Information

Computer science, the study of computation, offers students the challenge and excitement of a dynamically evolving science whose discoveries and applications affect every aspect of modern life. Computer science is a rich intellectual field where practitioners apply a computational approach to address a wide variety of interesting and challenging problems. Computer scientists are engaged in research in core areas of theoretical computer science, computer systems design, algorithms, and programming languages, as well as more application-oriented areas such as databases, networking, and informatics.

The Department of Computer and Information Science (CIS) is committed to a strong research program and a rewarding educational experience for undergraduate and graduate students.

The department offers instruction and opportunities for research in the following areas:

  • theoretical computer science (computational complexity, models of computation, algorithm design)
  • computational science
  • operating systems, parallel processing, distributed systems, performance evaluation
  • human-computer interaction, visualization
  • computer security
  • software engineering
  • networking
  • databases and data mining
  • programming languages and compilers
  • artificial intelligence

The department offers bachelor’s, master’s and doctoral degrees; in addition, two undergraduate minors and a selection of service courses are offered for students who want introductory exposure to computers and computer applications. The computer science programs at the university are continually evolving as the discipline matures and as students’ needs change.

Facilities

The Department of Computer and Information Science is housed in Deschutes Hall, which holds faculty and graduate student offices and extensive laboratory space for research and instruction.

Undergraduate majors may use campus computing labs staffed by CIS undergraduate tutors and lab assistants. Undergraduate majors taking upper-division courses and graduate students share a collaborative computing lab for the exclusive use of CIS students. Graduate and undergraduate students engaged in active research also have access to the computing facilities of the associated research lab.

The cognitive modeling and eye-tracking laboratory features multiple Eyegaze eye trackers and a Tobii T60 eye tracker, used to collect and analyze the eye movements people make during human-computer interactions, and to develop eye-controlled user interfaces for people with disabilities. The lab also features a VRSonic SoundSim Cube spatialized audio server used to explore three-dimensional sound perception.

Research in high-performance computing and computational science is supported by resources shared among the department, the Computational Science Institute, and the Neuroinformatics Center. In addition, the University of Oregon, through a Major Research Instrumentation Program grant from the National Science Foundation, has created a large-scale computational and storage resource to support multidisciplinary scientific research. The Applied Computational Instrument for Scientific Synthesis (ACISS) is a heterogenous platform managed as a cloud system for computational science, informatics, and data science.

To complement these facilities, the CIS department has a visualization lab with a tiled LCD display wall, 3-D stereo, and a high-definition tiled rear-projection system.

The advanced integration and mining laboratory fosters research on finding useful patterns from the mountain of data on biology, health, medicine, neuroscience, physiology, and social networks and on integrating data from structurally and semantically heterogeneous resources such as databases, the World Wide Web, and the Semantic Web.

The multimedia and internetworking research laboratory features an array of high-end servers and mass storages for development and testing of new network protocols as well as network measurement.

The network security laboratory features hardware and software facilities devoted to simulation of malicious network software (including Internet worms and phishing) and experimentation on defense countermeasures (such as Internet routing security).

The ubiquitous computing laboratory uses a mix of custom-designed and commercial hardware to study the application of assistive software to everyday living. Researchers are particularly interested in the design of software for those with impairments that limit their use of commercial, off-the-shelf software.

In addition, the university is a member of Internet2, a high-speed network connecting major research institutions.

Careers

The undergraduate program is designed to prepare students for professional careers or graduate study. The field of computer science, which has become increasingly interdisciplinary over the past decade, offers a rich array of opportunities in fields as disparate as medicine, manufacturing, and the media as well as the computer industry.

Graduates come away with confidence that they can specify, design, and build large software systems; analyze the effectiveness of computing techniques for a specific problem; and work effectively in problem-solving teams. The master of arts (MA) and master of science (MS) degree programs prepare students for higher-level positions in the areas described above as well as for teaching positions in community colleges. The PhD degree program trains students as scientists for advanced research in specialized areas of computer science and for teaching in universities.

Undergraduate Studies

The Department of Computer and Information Science offers a major and a minor in computer and information science, a major in mathematics and computer science, and a minor in computer information technology.

The computer and information science major is intended for students who want to study computers and computation with strong mathematical and scientific foundations. The mathematics and computer science major emphasizes formal and abstract problem solving complemented by computational methods and computer technologies. This program, administered jointly with the Department of Mathematics, is described in the Mathematics and Computer Science section of this catalog. Both of these majors lead to the bachelor of arts (BA) or bachelor of science (BS) degrees.

Students majoring in computer and information science may choose to focus their studies in one of several areas of specialization, including in-depth tracks within computer science as well as interdisciplinary tracks involving courses from other departments. The current computer science tracks include foundations, software development, computer networks, and database and informatics. The current interdisciplinary tracks include computational arts: multimedia, business information systems, bioinformatics, and computational biology. These tracks prepare students for careers in the private or public sector as well as for graduate-level study.

All tracks build on the standard CIS core requirements. In addition, each track specifies a set of coordinated choices for fulfilling upper-division computer-science and other electives requirements. Students interested in specializing in a track should contact their advisor as early as possible.

Preparation. High school students who plan to major in computer and information science should pursue a strong academic program, including substantial work in mathematics and the sciences. Courses in algebra, geometry, trigonometry, and more advanced topics should be included. Substantial experience in expository and technical writing is highly desirable. Courses in computer programming or computer technology are useful but not required. Upon arrival at the university, freshmen should consult with a CIS advisor to find the entry-level course best suited to the student’s background.

Transfer and Second Baccalaureate Students

Transfer and second baccalaureate students should consult the online Interactive Transfer Catalog as well as a CIS advisor to determine whether computer science, mathematics, and science courses they have taken fulfill the major requirements. Completing only general-university requirements prior to transferring to the University of Oregon may not be sufficient preparation to complete a CIS degree in two years.

Students attending community college in Oregon are encouraged to obtain the Associate of Arts Oregon Transfer degree before entering the University of Oregon. While earning this degree, community college transfer students should take discrete mathematics, calculus, and computer science.

Major Requirements

Computer and information science majors must complete at least 56 credits of CIS courses, of which 24 must be earned in residence at the University of Oregon. In addition, majors must complete at least 24 credits in mathematics, 12 credits in the sciences, 4 credits of technical or business writing, and at least 8 additional credits (depending on the student’s chosen track). The specific requirements for the CIS major fall in five categories: core courses, track courses, mathematics, writing, and science.

Core Courses
Lower-Division Core

Computer Science I,II,III (CIS 210, 211, 212) is taken concurrently with Elements of Discrete Mathematics I,II,III (MATH 231, 232). Students must earn no grade below C for automatic advancement to the upper-division core courses.

Upper-Division Core

Computer and information science majors must take the following courses for a letter grade: Intermediate Data Structures (CIS 313), Computer Organization (CIS 314), Intermediate Algorithms (CIS 315), C/C++ and Unix (CIS 330), Operating Systems (CIS 415), Software Methodology (CIS 422), and Principles of Programming Languages (CIS 425).

Mathematics Core

Students must take 8 graded credits from among these three sequences (students taking the computational arts: multimedia track should consult the track description for the mathematics core requirement): Calculus I,II (MATH 251, 252) or Calculus with Theory I,II (MATH 261, 262) or Calculus for the Biological Sciences I,II (MATH 246, 247). Students also choose 8 credits from the following: Elements of Discrete Mathematics III (MATH 233), Calculus III (MATH 253), Elementary Linear Algebra (MATH 341), and Statistical Methods I (MATH 425).

Science Core

Majors must take at least 12 credits in one of the following options (students taking the bioinformatics or computational biology tracks should consult the track descriptions for science core and track requirements):

  1. General Physics (PHYS 201, 202, 203) or Foundations of Physics I (PHYS 251, 252, 253). Students are encouraged to complete the accompanying lab courses. Physics is required for networks track students.
  2. General Chemistry (CH 221, 222, 223) or Honors General Chemistry (CH 224H, 225H, 226H). Students are encouraged to complete the accompanying lab courses.
  3. Introduction to Chemical Principles (CH 111), The Chemistry of Sustainability (CH 113), General Chemistry (CH 221) or Honors General Chemistry (CH 224H), and General Biology I (BI 211) and either General Biology II (BI 212) or General Biology III (BI 213).
  4. Psychology. Mind and Brain (PSY 201), Mind and Society (PSY 202), and Statistical Methods in Psychology (PSY 302).
  5. Geography. The Natural Environment (GEOG 141) and two from Climatology (GEOG 321), Geomorphology (GEOG 322), or Biogeography (GEOG 323).
  6. Geological Sciences. Earth’s Interior Heat and Dynamics (GEOL 201), Earth Surface and Environmental Geology (GEOL 202), Evolution of the Earth (GEOL 203).
Writing Core

In addition to the university’s writing requirement, CIS majors must take either Scientific and Technical Writing (WR 320) or Business Communications (WR 321).

Computer Science Tracks

In addition to the core CIS, mathematics, science, and writing courses, computer and information science majors must complete a set of track requirements.

Foundations Track

The foundations track is the most general track, allowing a student to choose a set of electives tailored to his or her interests and intended choice of career.

Electives. Foundations track students choose a minimum of 16 credits of upper-division CIS courses from the approved list (available from the CIS department office and online) or with the consent of a CIS advisor. In addition to the CIS electives and mathematics core, students choose 8 credits of mathematics electives selected from MATH 256, 281–282, 315, 341–342, 346, 351–352, 391–393, 411–415, 420–422, 425,431–433, 441, 444–446, 456–457, 461–466; CIS 413, 420, or 427.

Software Development Track

The software development track prepares students for careers in software engineering, software project management, software quality assurance, and other areas involving the creation of software. Course work focuses on solving problems related to the cost of development as well as the quality of the software delivered in complex software projects.

CIS Required Courses. Software Methodology II (CIS 423) and User Interfaces (CIS 443); one large programming project course chosen from Computational Science (CIS 455) or Introduction to Compilers (CIS 461); one theory course chosen from Advanced Data Structures (CIS 413), Automata Theory (CIS 420), or Introduction to Logic (CIS 427).

Electives. Students choose a minimum of 8 additional credits of upper-division CIS courses from the approved list (available from the CIS department office and online) or with the consent of a CIS advisor.

Computer Networks Track

The computer networks track prepares students for careers as network systems administrators, network protocol developer-programmers, or network security specialists in a wide range of environments, including educational institutions, business enterprises, and government agencies, as well as for advanced graduate studies and research in the field of computer networks. Course work encompasses most aspects of network theory and practice.

Science. To fulfill the core science requirement, students take General Physics (PHYS 201, 202, 203) or Foundations of Physics I (PHYS 251, 252, 253). Students are encouraged to complete the accompanying lab courses.

CIS Required Courses. Introduction to Networks (CIS 432), Computer and Network Security (CIS 433), and Modeling and Simulation (CIS 445).

Electives. Students choose a minimum of 12 additional credits of upper-division CIS courses from the approved list (available from the CIS department office and online) or with the consent of a CIS advisor.

Database and Informatics Track

The database and informatics track prepares students for careers in database application programming, database design, doctoral work in business administration, and graduate work in informatics and database theory. Course work includes data structures, data architecture, and data mining.

CIS Required Courses. Database Processing (CIS 451), Database Issues (CIS 452), and Data Mining (CIS 453).

Electives. Students choose a minimum of 12 additional credits of upper-division CIS courses from the approved list (available from the CIS department office and online) or with the consent of a CIS advisor.

Interdisciplinary Tracks
Computational Arts: Multimedia Track

The computational arts: multimedia track, designed for computer and information science majors who plan to work in the field of multimedia arts, prepares the student for artistic and technical aspects of this area.

Mathematics. To fulfill the core mathematics requirement, students must take 12 credits from among these three sequences: Calculus for the Biological Sciences I,II (MATH 246, 247) or Calculus I,II (MATH 251, 252) or Calculus with Theory I,II (MATH 261, 262); and at least one of Introduction to Methods of Probability and Statistics (MATH 243), Calculus III (MATH 253), Calculus with Theory III (MATH 263), or Elementary Linear Algebra (MATH 341).

CIS Required Courses. Introduction to Computer Graphics (CIS 441), User Interfaces (CIS 443).

Electives. Students choose a minimum of 12 additional credits of upper-division CIS, music, or digital arts courses from the approved list (available from the CIS department office and online) or with the consent of a CIS advisor.

Minor. Students complete a minor in multimedia from the Department of Art in the School of Architecture and Allied Arts (28 credits; fulfilled under the supervision of an art department advisor).

Business Information Systems Track

Graduates in the business information systems track are qualified to work as analysts, managers, developers, or consultants, and to enter leadership-development programs. Completion of this track, combined with professional work experience and economics courses, prepares students to enter the Lundquist College of Business MBA program at the University of Oregon, and MBA programs at other universities.

CIS Required Courses. Introduction to Networks (CIS 432), Database Processing (CIS 451), Computer Ethics (CIS 490).

Electives. Students choose a minimum of 12 additional credits of upper-division CIS courses from the approved list (available from the CIS department office and online) or with the consent of a CIS advisor.

Minor. Students complete a minor in business administration from the Lundquist College of Business (24 credits; fulfilled under the supervision of a business college advisor).

Bioinformatics Track

The bioinformatics track prepares students to apply computational and mathematical techniques to the analysis and management of biological data. Course work in this track combines depth in applied and formal aspects of computer science with rigorous training in biology.

Science. To fulfill the core science requirement, students take General Biology I,III,IV (BI 211, 213, 214). Before you take the biology sequence, you must fulfill the appropriate chemistry prerequisites (as many as 12 additional credits). BI 212 is not required for this track.

CIS Required Courses. Database Processing (CIS 451), Data Mining (CIS 453), and Bioinformatics (CIS 454).

Upper-Division Electives. Students choose a minimum of 12 additional upper-division electives from CIS, biology, or mathematics from the approved list (available from the CIS department office and online) or with the consent of a CIS advisor.

Computational Biology

The computational biology track prepares students to apply computational techniques from computer science to address scientific problems in biology such as gene sequencing, protein analysis, and evolutionary modeling. Course work in this track combines depth in applied and formal aspects of computer science with rigorous training in biology.

Science. To fulfill the core science requirement, students take one of the CIS-approved biology sequences: BI 211, 212, 213 or BI 211, 212, 214 or BI 281H, 282H, 283H. Before you take a biology sequence, you must fulfill the appropriate chemistry prerequisites (as many as 12 additional credits).

Science Additional Required Course. Organic Chemistry (CH 331).

CIS Required Courses. Modeling and Simulation (CIS 445), Data Mining (CIS 453), and Computational Science (CIS 455).

Upper-Division Electives. Students choose a minimum of 12 additional upper-division electives from CIS, biology, or mathematics from the approved list (available from the CIS department office and online) or with the consent of a CIS advisor.

Programming Experience

Students who take Computer Science I (CIS 210) are expected to have prior programming experience from a high school course, through employment, or in a course such as Introduction to Programming and Algorithms (CIS 122). Students who are unsure about their level of preparation should meet with a CIS advisor.

Sequence of Courses. Students with sufficient programming experience should take Elements of Discrete Mathematics I,II (MATH 231, 232) and Computer Science I,II,III (CIS 210, 211, 212) in the freshman year. Students with little or no programming experience should take Explorations in Computing (CIS 105) and Introduction to Programming and Algorithms (CIS 122) in the freshman year, and the Elements of Discrete Mathematics and Computer Science sequences in the sophomore year.

Major Progress Review and Major in Good Standing

Each major must meet with his or her advisor and file the Major Progress Review form after completing Intermediate Data Structures (CIS 313) and Computer Organization (CIS 314). Mathematics and CIS core courses used to satisfy major requirements must be taken for letter grades and passed with grades of C– or better. Data Structures Laboratory (CIS 323) is taken pass/no pass (P/N) concurrently with CIS 313. Other courses used to satisfy the major requirements may be taken for letter grades or pass/no pass. Grades of C– or better or P must be earned in these courses. At least 12 of the upper-division credits applied to the degree must be taken in residence at the university. A student who receives two grades below C– in the upper-division core may be removed from the major.

Prerequisites

Except as stated in the course description, prerequisites for CIS core courses must be completed with grades of C– or better. Students who can present evidence of equivalent academic experience may submit a petition to the Undergraduate Education Committee to waive a prerequisite.

Mathematics and Computer Science

The Department of Computer and Information Science and the Department of Mathematics jointly offer an undergraduate major in mathematics and computer science, leading to a bachelor of arts or a bachelor of science degree. This program is described in the Mathematics and Computer Science section of this catalog. This major prepares students for a wide range of careers in the high tech industry, for advanced graduate study, and for careers as middle school and high school teachers.

Honors Program

Students with a GPA of 3.50 or higher in computer and information science and a cumulative GPA of 3.00 or higher are encouraged to apply to the department honors program after completing CIS 313, 314, 315, and 323. The application form is available in the department office. To graduate with departmental honors, a student must write a thesis under the supervision of a faculty member.

Internships

Practical work experience in the software industry is seen as a valuable complement to academic course work. The department works with students to place them in internship positions in the summer and throughout the academic year. Students may also use the services of the UO Career Center and other agencies to identify internship opportunities. Majors may receive academic credit for internships. To earn upper-division elective credit for an internship, the work experience must be at a technical level beyond CIS 313 or 323 and be sponsored by a CIS faculty member. A contract signed by the faculty sponsor, internship supervisor, and the student must be filed with the department before the internship begins.

Research

Faculty members in the computer and information science department receive grants from government, industry, and private sources to conduct research in their areas of expertise. Undergraduate majors are encouraged to take part in the various research groups in the department. Most students begin approaching faculty members for such opportunities while taking the 300-level courses. Research can be used to fulfill upper-division electives, as part of an honors thesis, or in some cases as a paid internship.

Awards and Honor Societies

The Erwin and Gertrude Juilfs Scholarship in Computer and Information Science, in honor of Erwin and Gertrude Juilfs, is awarded to one or more students who show exceptional promise for achievement as evidenced by grade point average, originality of research, or other creative activities.

The Geoffery Eric Wright Outstanding Junior Award, in honor of CIS student Geoffery Wright, is a scholarship for students displaying high-quality academic performance, commitment to learning, and a promise of further outstanding achievement in computer and information science and its applications.

The J. Donald Hubbard Scholarship in Computer and Information Science, in honor of J. Donald Hubbard, recognizes an undergraduate or graduate student who shows outstanding promise in the fields of computer-human interaction, computer graphics, or multimedia.

The Phillip Seeley Scholarship in Computer and Information Science has been established as a permanent endowment to provide a source of income supporting a scholarship for outstanding undergraduate CIS students. This scholarship is based on overall quality of academic work, commitment to learning, and potential for further academic achievemnt. Preference is given to resident Oregon students with financial need, as determined by the UO Office of Student Financial Aid and Scholarships.

Students with outstanding academic accomplishments may be invited to become members of Upsilon Pi Epsilon, the international honor society in computer science.

Minor Requirements

Computer and Information Science

The minor in computer and information science introduces the theories and techniques of computer science and develops programming skills that are applicable to the student’s major. It is a strong complement to a major in any of the sciences and in related fields such as multimedia arts. Students from all majors have found their career opportunities enhanced through the CIS minor.

Before enrolling in upper-division courses, students planning a minor in computer and information science must file an application form with the department. Each student should consult with a CIS faculty advisor to plan the minor program.

The CIS minor requires completion of 32 credits—24 in computer science and 8 in mathematics. Courses applied to the CIS minor must be completed with grades of C– or better. CIS 409 and CIS 323 may not be used to fulfill requirements for the minor.

Lower-Division Courses 20 credits
Computer Science I,II,III (CIS 210, 211, 212) 12
Elements of Discrete Mathematics I,II (MATH 231, 232) 8
Upper-Division Courses 12 credits
Intermediate Data Structures (CIS 313) 4
Upper-division electives 8
Computer Information Technology

The minor in computer information technology (CIT) prepares students to work with evolving technologies for work environments that require development and management of web applications, databases, computer networks, open-source platforms, and cloud computing. It provides practical experience in understanding the tools and technologies of the computing field. It goes well with majors in the professional schools such as business and journalism and is an excellent match with almost any major on campus.

Before enrolling in CIT upper-division courses, students planning a minor in computer information technology must file an application form with the department. Each student should consult with an assigned CIT faculty advisor to plan the minor program. The minor requires 24 credits.

Lower-division courses must be completed with grades of B– or better. Upper-division courses must be taken in sequence and are offered only once a year. Upper-division courses must be completed with grades of C– or better.

Lower-Division Courses 12 credits
Digital Information Processing (CIS 110) 4
Web Programming (CIS 111) 4
Advanced Business Systems (CIT 281) 4
Upper-Division Courses 12 credits
Database Systems (CIT 381) 4
Information Architectures and Intranets (CIT 382) 4
Enterprise Networks (CIT 383) 4

Graduate Studies

The department offers programs leading to the master of arts (MA), master of science (MS), and doctor of philosophy (PhD).

Master’s Degree Program

Admission. Admission to the master’s degree program in computer and information science is competitive. It is based on prior academic performance, Graduate Record Examinations (GRE) scores, and computer science background. Minimum requirements for admission with graduate master’s status are:

1. Documented knowledge of

  • Principles of computer organization
  • Software development and analysis
  • Data structures and algorithms analysis and design

2. GRE score on the general test. The computer science test is optional

3. A score of at least 100 on the Internet-based option of the Test of English as a Foreign Language (TOEFL iBT) or a score of 7.5 on the International English Language Testing System (IELTS) for applicants who have no justification for a waiver. Applicants may be required to study one or more terms at the university’s American English Institute or elsewhere before taking any graduate work in the department. International applicants for teaching assistantships who score at least 26 on the speaking section of the TOEFL iBT will not have to take the Speaking Proficiency English Assessment Kit (SPEAK) test upon arrival at the university

4. Three letters of recommendation, a statement of goals, and unofficial transcripts (via on online application). Note that official transcripts are sent to the UO Office of Admissions

Application materials should be submitted by January 15 for admission the following fall term.

Admission to the master’s degree program requires the substantive equivalent of an undergraduate degree in computer science. A second bachelor’s degree program can be used to gain the required level of computer science background. Students without this background may be admitted conditionally and required to complete remedial course work before achieving unconditional standing in the program.

Basic Degree Requirements

The 54-credit master’s degree program consists of core courses, cluster depth-and-breadth courses, and elective courses.

Core Courses (12 credits). Algorithms and Complexity (CIS 621), Structure of Programming Languages (CIS 624), Distributed Systems (CIS 630)

Cluster Courses (12 credits). Each student must take the required course (4 credits) and two depth courses (8 credits) from one cluster of related courses. A list of clusters is available in the department office.

Elective Courses (30 credits). Twelve of the 30 credits may be taken outside the department in an area closely related to the student’s professional goals, subject to approval by the student’s academic advisor; options include courses in linguistics, mathematics, physics, and psychology. Elective options within the department include any course numbered 500 or higher with the following limitations:

  1. Up to 8 credits in Research (CIS 601) and Reading and Conference (CIS 605)
  2. Up to 12 credits in Thesis (CIS 503) or Final Project (CIS 609)
  3. Experimental Courses (CIS 510 or 610), which are new courses awaiting permanent status, with prior approval by the graduate education committee
  4. Master’s students who do not complete a thesis or final project can count a maximum of 8 credits in CIS courses numbered 601–608
  5. Master’s students who complete a thesis or final project may apply as many as 12 credits in Thesis (CIS 503) or Final Project (CIS 609), plus an additional 4 credits in CIS courses numbered 601–608

Complex Software Systems. Students must show competency in the design and implementation of software systems by taking one course that requires a substantial programming project. A list of courses that satisfy this requirement is available in the department office.

Grade Requirements. The 24 credits in the required courses and the cluster courses must be passed with grades of B– or better. As many as 12 of the 30 elective credits may be taken pass/no pass (P/N); graded elective courses must be passed with grades of C or better. A 3.00 GPA must be maintained for courses taken in the program.

Master’s Thesis. The research option requires a written thesis and 9 to 12 credits in Thesis (CIS 503). Thesis research is supervised by a faculty advisor; this advisor and other faculty members constitute the thesis committee. The master’s thesis is expected to be scholarly and to demonstrate mastery of the practices of computer science. This option is recommended for students who plan subsequent PhD research.

Master’s Project. The project option requires a minimum of 8 credits, and as many as 12, in Final Project (CIS 609).

Under the supervision of a faculty member, the project may entail a group effort involving several master’s degree students. 

Accelerated Master’s Degree Program

This program is open to students who earn a BS degree in computer and information science at the University of Oregon and who want to enter the master’s degree program.

If a UO undergraduate takes one or two 400-level electives that also are offered as 500-level courses, the student can petition the department to have 4 or 8 credits deducted from the total number of elective credits required for the master’s degree. The student must earn an A– or better in the 400-level course and have an overall GPA of 3.50 in upper-division CIS courses to participate in this accelerated master’s program. Note that all admission procedures, as outlined in the Master’s Degree Program section, are also applicable.

Doctoral Degree Program

The doctor of philosophy in computer and information science is, above all, a high-quality degree that is not conferred simply for the successful completion of a specified number of courses or years of study. It is a degree reserved for students who demonstrate a comprehensive understanding of computer science and an ability to do creative research. Each PhD student produces a significant piece of original research, presented in a written dissertation and defended in an oral examination.

The PhD program is structured to facilitate the process of learning how to do research. Students begin by taking required courses to build a foundation of knowledge that is essential for advanced research. Early in the program the student gains research experience by undertaking a directed research project under the close supervision of a faculty member and the scrutiny of a faculty committee. In the later stages of the program, students take fewer courses and spend most of their time exploring their dissertation area to learn how to identify and solve open problems. The final steps are to propose an independent research project, do the research, and write and defend a dissertation.

Admission. Application materials should be submitted by January 15 for the following fall term. Materials include everything required for admission to the master’s program as well as a discussion of the anticipated research area.

Students who enter the UO with a master’s degree may petition the Graduate Education Committee for credit toward the course requirements listed below, indicating how their prior graduate work corresponds to these courses. See the graduate coordinator for the petition.

Degree Requirements

1. Course Requirements. PhD candidates who enter the program without a master’s degree in computer science must take 48 credits in graduate course work including the core and cluster courses required for the MS program. Doctoral students must earn a minimum grade of B– and an overall GPA of 3.50 in the six courses they use to satisfy the core and cluster requirements.

a. Core Courses (12 credits). Algorithms and Complexity (CIS 621), Theoretical Foundations (CIS 624), and Distributed Systems (CIS 630) must be taken by the end of the student’s second year

b. Cluster Courses (12 credits). A required course and two depth courses from a list of approved clusters. This list is updated each year to reflect experimental and other courses offered that year

c. Elective Courses (24 credits). An additional 24 credits of graduate-level course work; 12 must be from 600-level courses. Courses numbered 510 that appear on the approved course list may be included in any 500-level credits. For graduate-level courses taken in other UO departments, a petition to the Graduate Education Committee is required

d. Minimum Annual Enrollment. PhD students are expected to enroll in at least 6 credits of 600-level course work each year until their advancement to candidacy. Research (CIS 601), Dissertation (CIS 603), and Reading and Conference (CIS 605) do not satisfy this requirement

2. Directed Research Project. Complete a directed research project, which is supervised by a faculty member and evaluated by a faculty committee. The research project comprises the following:

a. The definition and expected results of the project in the form of a Directed Research Project Contract

b. Delivery of the materials constituting the results of the project and oral presentation of the results

c. A private oral examination by the committee members

3. Status Change. PhD candidates are admitted conditionally. Successful completion of the directed research project leads to a change in the student’s doctoral status from conditional to unconditional

4. Dissertation Advisory Committee. After successfully completing the directed research project, PhD students form a Dissertation Advisory Committee chaired by their research advisor. The main role of the committee is to advise the student between completion of the research project and mounting the dissertation defense. The committee takes primary responsibility for evaluating student progress. In addition, it approves the plan for the oral comprehensive examination, which in turn is approved by the graduate education committee. See the graduate coordinator for further instructions.

5. Oral Comprehensive Examination. The student chooses an area of research and works closely with an advisor to learn the area in depth by surveying the current research and learning research methods, significant achievements, and how to pose and solve problems. The student gradually assumes a more independent role and prepares for the oral comprehensive examination, which tests depth of knowledge in the research area. The examination contains the following:

a. A survey of the area in the form of a position paper and an annotated bibliography

b. A public presentation of the position paper

c. A private oral examination by committee members

6. Advancement to Candidacy. After the oral comprehensive examination, the committee decides whether the student is ready for independent research work; if so, the student is advanced to candidacy

7. Dissertation and Defense. Identify a significant unsolved research problem and submit a written dissertation proposal to the dissertation committee. The dissertation committee, comprising three department members and one member from an outside department, is approved by the graduate education committee. In addition to these four, the dissertation committee often includes a fifth examiner. This outside examiner should be a leading researcher in the candidate’s field who is not at the University of Oregon. The outside member should be selected a year before the candidate’s dissertation defense, and no later than six months before.

The student submits a written dissertation proposal to the committee for approval, and the proposal is then submitted to the graduate education committee. The proposal presents the research problems to be tackled, related research, methodology, anticipated results, and work plan. The committee may request an oral presentation, similar to the oral comprehensive exam, which allows the student to explain and answer question about the proposed research. The student then carries out the research.

The final stage is writing a dissertation and defending it in a public forum by presenting the research and answering questions about the methods and results. The dissertation committee may accept the dissertation, request small changes, or require the student to make substantial changes and schedule another defense

8. Graduate School Requirements. PhD students must meet the requirements set by the Graduate School as listed in that section of this catalog

Research Areas. It is important that a PhD student be able to work effectively with at least one dissertation advisor. Hence the student should identify, at an early stage, one or more areas of research to pursue. The student should also find a faculty member with similar interests to supervise the dissertation.

Computer and Information Science Courses (CIS)

105 Explorations in Computing (4) Overview of basic ideas and areas of computer science: includes algorithms, hardware, machine organization, programming languages, networks, artificial intelligence, and associated ethical issues. 

110 Fluency with Information Technology (4) 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.

111 Introduction to Web Programming (4) 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 110 recommended preparation.

115 Multimedia Web Programming (4) Principles and practices of digital imaging, audio, video, and multimedia authoring with Flash for website design. Labs cover multimedia software tools. CIS 110 recommended preparation.

122 Introduction to Programming and Problem Solving (4) Computational problem solving, algorithm design, data structures, and programming using a multiparadigm programming language. Introduces techniques for program design, testing, and debugging.

196 Field Studies: [Topic] (1–2R)

198 Workshop: [Topic] (1–2R)

199 Special Studies: [Topic] (1–5R)

210, 211, 212 Computer Science I,II,III (4,4,4) 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. Prereq for 210: programming experience, MATH 112.

313 Intermediate Data Structures (4) 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. Prereq: CIS 212, MATH 232; coreq for CIS majors: CIS 323.

314 Computer Organization (4) Introduction to computer organization and instruction-set architecture—digital logic design, binary arithmetic, design of central processing unit and memory, machine-level programming. Prereq: CIS 212, MATH 231.

315 Intermediate Algorithms (4) Algorithm design, worst-case and average-behavior analysis, correctness, computational complexity. Prereq: CIS 313, 323. MATH 233 recommended.

323 Data Structures Laboratory (2) Programming laboratory. Data structures and object-oriented implementation. Prereq: CIS 212, MATH 232; coreq for CIS majors: CIS 313.

330 C/C++ and Unix (4) 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. Prereq: CIS 313, 323.

399 Special Studies: [Topic] (1–5R)

401 Research: [Topic] (1–21R)

403 Thesis (1–12R)

404 Internship: [Topic] (1–4R) Prereq: CIS 313.

405 Reading and Conference: [Topic] (1–12R)

406 Field Studies: [Topic] (1–21R)

407/507 Seminar: [Topic] (1–5R) Opportunity to study in greater depth specific topics arising out of other courses.

408/508 Workshop: [Topic] (1–21R)

409 Practicum (1–2R) The student assists other students who are enrolled in introductory programming classes. For each four hours of scheduled weekly consulting, the student is awarded 1 credit. Prereq: departmental consent. R for maximum of 4 credits.

410/510 Experimental Course: [Topic] (1–5R)

413/513 Advanced Data Structures (4) Complex structures, storage management, sorting and searching, hashing, storage of texts, and information compression. Prereq: CIS 315.

415 Operating Systems (4) Principles of operating system design. Process and memory management, concurrency, scheduling, input-output and file systems, security. Prereq: CIS 313, 314, 323.

420/520 Automata Theory (4) Provides a mathematical basis for computability and complexity. Models of computation, formal languages, Turing machines, solvability. Nondeterminism and complexity classes. Prereq: CIS 315, MATH 233.

422/522 Software Methodology I (4) Technical and nontechnical aspects of software development, including specification, planning, design, development, management and maintenance of software projects. Student teams complete projects. Prereq: CIS 323; pre- or coreq: CIS 315.

423/523 Software Methodology II (4) Student teams complete a large system design and programming project. Final system specifications, test plan, user documentation, and system walk-through. Prereq: CIS 422.

425 Principles of Programming Languages (4) 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. Prereq: CIS 315.

427/527 Introduction to Logic (4) Basic notions of logic: propositional logic, first-order logic, Hilbert systems, sequent calculus, natural deduction. Soundness, completeness, undecidability. Current research in logic frameworks, automated deduction, Curry-Howard isomorphism. Prereq: MATH 233.

429/529 Computer Architecture (4) RISC (reduced instruction-set computer) and CISC (complex instruction-set computer) design, storage hierarchies, high-performance processor design, pipelining, vector processing, networks, performance analysis. Prereq: CIS 313, 314, 323.

432/532 Introduction to Networks (4) Principles of computer network design. Link technologies, packet switching, routing, internetworking, reliability. Internet protocols. Programming assignments focus on protocol design. Prereq: CIS 313, 314, 323. CIS 415 recommended.

433/533 Computer and Network Security (4) Security for various aspects of computers and networks. Elementary cryptography, program security, trusted operating systems, network security, privacy, and legal and ethical issues. Prereq: CIS 415.

441/541 Introduction to Computer Graphics (4) Introduction to the hardware, geometrical transforms, interaction techniques, and shape representation schemes that are important in interactive computer graphics. Programming assignments using contemporary graphics hardware and software systems. Prereq: CIS 313, 323; pre- or coreq: CIS 314.

443/543 User Interfaces (4) Introduction to user interface software engineering. Emphasis on theory of interface design, understanding the behavior of the user, and implementing programs on advanced systems. Prereq: CIS 313, 314, 323.

445/545 Modeling and Simulation (4) Theoretical foundations and practical problems for the modeling and computer simulation of discrete and continuous systems. Simulation languages, empirical validation, applications in computer science. Prereq: CIS 314, 315, 323.

451/551 Database Processing (4) Fundamental concepts of DBMS. Data modeling, relational models and normal forms. File organization and index structures. SQL, embedded SQL, and concurrency control. Prereq: CIS 313, 314.

453/553 Data Mining (4) Databases, machine learning, artificial intelligence, statistics, and data visualization. Examines data warehouses, data preprocessing, association and classification rule mining, and cluster analysis. Prereq: CIS 451/551.

454/554 Bioinformatics (4) Introduction to bioinformatics from a computer science perspective covering algorithms for basic operations such as sequence comparison and phylogenetic inference on existing databases.

455/555 Computational Science (4) Solving scientific problems with high-performance computers; algorithms, languages, and software used in scientific computing and visualization. Group projects on current research in physics, chemistry, biology, and other sciences. Prereq: CIS 314, 422.

461/561 Introduction to Compilers (4) Lexical analysis, parsing, attribution, code generation. Prereq: CIS 314, 425 or 624. CIS 420/520 strongly recommended.

471/571 Introduction to Artificial Intelligence (4) Basic themes, issues, and techniques of artificial intelligence, including agent architecture, knowledge representation and reasoning, problem solving and planning, game playing, and learning. Prereq: CIS 315.

472/572 Machine Learning (4) A broad introduction to machine learning and its established algorithms. Topics include concept learning, decision trees, neural network. Prereq: CIS 315.

490/590 Computer Ethics (4) Addresses ethical issues and social impacts of computing. Topics include crime, hacking, intellectual property, privacy, software reliability, employment, and worldwide networks.

Prerequisites to graduate-level CIS courses are intended as guidelines. Students who are uncertain about eligibility for enrollment in a course are encouraged to consult the instructor.

503 Thesis (1–16R)

601 Research: [Topic] (1–16R)

602 Supervised College Teaching (1–5R)

603 Dissertation (1–16R)

604 Internship: [Topic] (1–4R)

605 Reading and Conference: [Topic] (1–16R)

606 Field Studies: [Topic] (1–16R)

607 Seminar: [Topic] (1–5R)

608 Colloquium: [Topic] (1R)

609 Final Project (1–16R) Final project for master’s degree without thesis.

610 Experimental Course: [Topic] (1–5R)

621 Algorithms and Complexity (4) Design and analysis of algorithms, strategies for efficient algorithms, introduction to complexity theory including NP-completeness. CIS 420/520 strongly recommended preparation.

622 Theoretical Foundations: [Topic] (4R) Selected topics from computability and complexity theory. Prereq: CIS 621. R twice when topic changes for maximum of 12 credits.

624 Structure of Programming Languages (4) Introduction to axiomatic, operational, and denotational semantics. Environments, stores, and continuations. Type theory, subtypes, polymorphism, and inheritance. Functional and logic programming.

630 Distributed Systems (4) Principles of distributed computer systems: interprocess communication, distributed file systems, distributed timing and synchronization, distributed programming, transactions, process scheduling, distributed shared memory. Prereq: CIS 415 or equivalent, CIS 429/529.

631 Parallel Processing (4) Advanced topics in parallel processing including massively parallel computer architecture, supercomputers, parallelizing compiler technology, performance evaluation, parallel programming languages, parallel applications. Prereq: CIS 429/529.

632 Computer Networks (4) Advanced issues in computer networks, focusing on research to extend the services offered by the Internet. Prereq: CIS 432/532.

640 Writing in Computer Research (2) Students learn to provide and accept constructive criticism of writing samples in a workshop format.

650 Software Engineering (4) Examines recent models and tools in software engineering including modifications to the traditional software life-cycle model, development environments, and speculative view of the future role of artificial intelligence.

677 Knowledge-Based Interfaces (4) Examination of research on knowledge-based user interfaces with particular attention to cognitive modeling. Topics include intelligent tutoring systems, natural language interfaces, and expert systems explanation. Prereq: CIS 471/571.

Computer Information Technology Courses (CIT)

281 Advanced Business Systems (4) Web 2.0 as a business platform: Infrastructure in the cloud, Office 2.0 (Google Docs), web and database integration with AJAX, XML, PHP, and MySQL. Requires computer-laboratory work in addition to regularly scheduled hours. Prereq: CIS 111.

381 Database Systems (4) Introduction to database systems, emphasis on database design and access. Database concepts, data modeling, normalization, data warehousing, query languages, formulation of complex queries. Prereq: CIT 281.

382 Information Architectures and Intranets (4) Organization of information on the web and applications of Internet technology. Emphasis on planning, implementation, and issues that apply to building and maintaining business Intranets. Prereq: CIT 381.

383 Enterprise Networks (4) Fundamentals of data communication and networks applied to enterprise networks and the Internet. Network management and security. Prereq: CIT 382.

405 Reading and Conference: [Topic] (1–4R)