Computer Science   May 2006

CS Course Descriptions
College of Engineering

Department Office: 3190 Merrill Engineering Building, (phone) 581-8224, (fax) 581-5843

Mailing Address: School of Computing, 50 S. Central Campus Dr. Rm. 3190, Salt Lake City, UT 84112-9205

Web Address: www.cs.utah.edu

E-mail: info@cs.utah.edu

Program Director: Martin Berzins, Ph.D.

Faculty

Professors. M. Berzins, E. Cohen, A. Davis, G. Gopalakrishnan, D. Hanscom, C. Hansen, T. Henderson, L. Hollaar, J. Hollerbach, C. Johnson, R. Kessler, G. Lindstrom, R. Riesenfeld, P. Shirley, K. Sikorski, F. Stenger, W. Thompson, J. Zachary.

Professors Emeriti. R. Johnson, K. Smith.

Associate Professors. E. Brunvand, J. Carter, E. Riloff, C. Silva, R. Whitaker.

Assistant Professors. R. Balasubramonium, J. de St. Germain, M. Flatt, J. Friere, P. Jensen, S. Kacera, M. Kirby, E. Praun, J. Regehr, K. Slind.

Research Professor. S. Jacobsen, J. Lepreau.

Research Associate Professors. S. Drake.

Research Assistant Professor. S. Parker, T. Tasdizen.

Adjunct Associate Professors. W. Hsieh, R. McDermott, C. Myers.

Adjunct Assistant Professors. S. Creem-Regehr.

Advisors Undergraduate Counselor: 3190 MEB, ugrad-help@cs.utah.edu, 581-8224 Graduate Counselor, 3190 MEB, grad-help@cs.utah.edu, 581-8224

Founded in 1965, the School of Computing (SOC) offers internationally well-regarded programs at both the undergraduate and graduate levels. SOC faculty and students have done pioneering work in interactive graphics, stack machine and dataflow architectures, digital recording, graphical user interfaces, three-dimensional rendering, asynchronous circuits, video games, computer algebra, and computer animation. Faculty and alumni have founded a number of well-known companies, including Adobe Systems, Ashlar, Atari, Cirrus Logic, Evans and Sutherland, Myricom, Netscape, Pixar, Pixel-Planes, Silicon Graphics, and WordPerfect.

The undergraduate program offers study in computer science leading to the Bachelor of Science degree.

The undergraduate curriculum provides a general education in mathematics, science, and the humanities as well as an in-depth study of both the theoretical and applied aspects of computer software and hardware. Motivated students can become involved in the department’s many research specialties. In addition, courses for non-majors emphasize the use of computing systems as problem-solving tools. Undergraduates have access to an extensive computing environment that includes over 150 Unix and Windows XP workstations.

Graduate students immerse themselves in the research activities of the department, which currently include asynchronous VLSI systems, automated knowledge acquisition, compilers, computer-aided geometric design, computer architecture, computer graphics, computer vision, databases, educational computing, formal methods for system design, geometric modeling, human-computer interaction, information-based complexity, natural language processing, numerical analysis, operating systems, parallel and distributed computing, programming languages, robotics, scientific computing and visualization, security, software development tools, software engineering, structured VLSI design, and virtual environments.

These research activities are funded from a variety of federal, state, and industrial sources, including the National Science Foundation, the Defense Advanced Research Projects Agency, the Department of Energy, the Office of Naval Research, the National Institutes of Health, the Utah State Centers of Excellence Program, Silicon Graphics, Hewlett-Packard, and IBM. The Scientific Computing and Imaging Institute recently received funding to create the Center for Bioelectric Field Modeling, Simulation, and Visualization from the NIH/NCRR Biomedical Research Technology Program. The school has an NSF Research Infrastructure award to support research activities requiring high-bandwidth, low-latency machine-to-machine communications, and it is a key participant in the University’s $20 million ASCI grant from the Department of Energy.

Graduate students have access to hundreds of Unix and Windows workstations and to the more specialized equipment that resides in the various research laboratories. This equipment includes a 96 CPU SGI Origin 2000 with 8 Infinite Reality Engines; SGI Power Challenge, Power Onyx, and Origin 200 computers; robot arms, mobile robots, and image digitization and display systems; a variety of visual and non-visual virtual environment interfaces, such as an immersive workbench; a professional-quality video editing and teleconferencing facility; advanced graphics display workstations equipped with special-purpose graphics hardware; and a collection of numerically controlled equipment used to produce physical prototypes of computer-generated designs.

Additional Sources of Information
The SOC publishes undergraduate and graduate handbooks, which will generally have the most up-to-date information about degree requirements and course offerings. The handbooks are available in the school’s office or from its Web site at www.cs.utah.edu/dept/handbooks.


Undergraduate Program


The SOC offers a Bachelor of Science degree and a minor in Computer Science. The Computer Engineering degree is offered jointly with the Department of Electrical Engineering; its description appears under its own heading elsewhere in this section of the catalog.

Computer Science Degree. Computer science students must meet special departmental admissions standards, maintain specified performance levels, and complete course requirements as outlined below. This program may be completed in four years if the student is able to take CP SC1410 (Introduction to Computer Science I) and MATH 1210 (Calculus I) during the fall semester of the freshman year.  Students not able to begin at this level may require more than four years to earn the degree.

Admission. Students, including transfer students, who do not meet departmental admission requirements are placed in a pre-major category by the Registrar. Such students are urged to visit the departmental undergraduate counselor for additional information.

In order to register for upper-division courses (3000-level or higher) in computer science, a student must first be admitted to full major status in the school. Applications for admission are reviewed at the end of Spring and Summer semesters.

To be admitted to full major status, a student must complete the following courses with an average grade of 2.8 and a minimum grade of C-: MATH 1210 and 1220; CP SC 1410 and 2420.  In addition, the student must have received a grade of CR in CP SC 1010 and have a cumulative GPA of 2.3 or higher.

All courses listed above must be taken for letter grades. CR/NC grades are not acceptable except in CP SC 1010.

If credit is granted for any of the above courses based on advanced-placement test scores, grades may be assigned for use in the admissions process. Check with the SOC undergraduate counselor for details.

Transfer Students. Students planning to transfer to the University of Utah from another Utah college or university can get information on course equivalences from either their current institution or from the SOC.

Students transferring from out-of-state schools must fill out the school’s course-equivalence forms and have them signed by appropriate University of Utah faculty.

Degree Requirements. Students must complete a minimum of 122 semester hours of course work including the requirements listed below:

General Education: Although this requirement is described in the Undergraduate Studies section of this catalog, Computer Science majors must satisfy more stringent requirements. The six classes taken to satisfy the intellectual explorations requirement must include two classes numbered 3000 or higher.

Writing: WRTG 3400 (Professional Writing) or WRTG 3200 (Writing in a Research University) is required.

Mathematics and Science: Required are MATH 1210 and 1220 (Calculus) and PHYS 2210 (Physics for Scientists and Engineers). In addition, students must take four additional math, science, and/or engineering courses each of which must be at least three semester hours. Students may choose BIOL 1210, CHEM 1210, PHYS 2220, or any math, science, or engineering course with a prerequisite or co-requisite of MATH 1220. Students typically choose courses that are prerequisites for their computer science electives.

Computer Science:
The following 10 computer science courses are required:

CP SC 1010, Introduction to Unix
CP SC 1410, Introduction to Computer Science I
CP SC 2420, Introduction to Computer Science II
CP SC 2100, Discrete Structures
CP SC 4400, Computer Systems
CP SC 3500, Software Practice I
CP SC 3505, Software Practice II
CP SC 4100, Algorithms and Data Structures
CP SC 3810, Computer Organization
CP SC 4500, Software Engineering Lab
Theory restricted elective: Students must take one of the following:
CP SC 3100, Models of Computation
CP SC 3200, Scientific Computation

Technical electives. In addition, seven elective computer science courses, totaling at least 21 semester hours, must be taken. Any computer science course at the 3000-level or above may be used, with the exception of CP SC 5010/20, and computer science seminars. Only one introductory graphics class may be counted and only one independent study class (with special permission) may be counted.

Capstone Requirement.
One of the following must be completed:
CP SC 4500, Software Engineering Lab
CP SC 4970, Bachelors Thesis

Duplication of Credit: No single course may be counted toward more than one of the requirements for the major.

Continuing Performance. In order to remain in good standing and graduate, students must maintain a cumulative University of Utah GPA of 2.3 or higher, and a GPA of 2.3 or higher in computer science courses taken at the University of Utah. Each course taken to satisfy computer science requirements listed above must be passed with a grade of C- or better. A student may repeat upper-division courses (3000-level or above) only once. All computer science classes taken to satisfy degree requirements must be taken for a letter grade; they may not be taken for CR/NC.

Students are expected to complete all degree requirements within four years of acceptance to full major status. Students not making satisfactory progress may be dropped from the school and declared inactive. Unsatisfactory progress is determined in one of two ways: (1) the student does not complete a computer science course for one year, or (2) there is no reasonable way the student can complete all degree requirements within the required time.

If personal circumstances prevent adequate progress, the student may request an extension of a specific duration and submit a revised schedule of completion. To be reinstated from inactive status, students must petition the Computer Science Undergraduate Committee. Reinstated students proceed under the latest graduation requirements.

Probation. Students whose cumulative GPA falls below 2.3, or whose average grade in University of Utah computer science classes falls below 2.3, are placed on academic probation and given conditions for a return to good standing. Normally, these conditions must be met during the next two semesters, excluding summer. Students who fail to meet probationary conditions are dropped from the full major rolls.

All students admitted as full majors are automatically given probationary status. If a student’s GPA in either of the above categories is below 2.3 at the end of the first year during which they take upper-level CS classes, the student is dropped from the CS major rolls.

Reinstatement requires a petition to the Undergraduate Committee. Reinstated students proceed under the latest graduation requirements.

Scholarships. The School of Computing, in cooperation with the College of Engineering, awards cash scholarships and tuition waivers each spring to deserving new and continuing computer science and computer engineering majors. Contact the school office for details.

Model Program of Study (for students working 20 hours or less/week)

First Year
Fall Semester (14.5)
MATH 1210 Calculus I (4)
CP SC 1010 Introduction to Unix (0.5)
CP SC 1410 Computer Science I (4)
General Education (3)
WRTG 2010 Writing (3)

Spring Semester (14)
MATH 1220 Calculus II (4)
CP SC 2420 Computer Science II (4)
CP SC 2100 Discrete Structures (3)
General Education (3)

Second Year
Fall Semester (15)
CP SC 3500 Software Practice I (4)
CP SC 3810 Computer Architecture (4)
PHYS 2210 Physics I (4)
WRTG 3400 Professional Writing (3)

Spring Semester (16)
CP SC 4100 Algorithms/Data Structures (4)
CP SC 3505 Software Practice II (3)
Math/Science elective (3)
General Education (3)
Free elective (3)

Third Year
Fall Semester (16)
CS theory elective (3)
CP SC 4400 Computer Systems (4)
Math/science elective (3)
General Education (3)
Free elective (3)

Spring Semester (15)
CS elective (3)
CS elective (3)
CS elective (3)
Math/science elective (3)
General education (3)

Fourth Year
Fall Semester (15)
CS elective (3)
CS elective (3)
CS elective (3)
General Education (3)
Free Elective (3)

Spring Semester (16)
CP SC 4500 (3)
CS elective (3)
Math/Science elective (3)
General Education (3)
Free elective (4)

Grand Total Hours: 122.5

Computer Science Honors Degree
The School offers an Honors Bachelor’s Degree in Computer Science. This program is intended primarily for students thinking of a career in research, but any student can apply. Students who wish to be admitted into the honors track should apply after taking CP SC 2420.  This application should consist of a short statement of career goals, along with any supplemental material the student deems relevant.  This supplemental material is strictly optional.

Students admitted to the departmental honors track will have probationary status until after the completion of CP SC 4005.

The degree requirements for the honors degree are detailed below.
-CP SC 4005 is required
-Either Honors 2211 or Honors 3200 is required (and can be counted in place of one of the required courses).
-At least one Computer Science course at the 6000-level or above must be taken.
-In addition, at least four courses must be taken that either have an honors designation or are Computer Science classes numbered 6000 or above.  At least three of these courses should be offered through the University Honors Curriculum (i.e., have course number HONOR-xxxxx).
-A Bachelor's honors thesis is required.
-The upper level CP SC classes taken to satisfy the above requirements would be counted toward the Computer Science elective requirement.

At graduation, the University requires that honors students have a GPA of at least 3.5 in the major and at least 3.4 overall.

Computer Science B.S./M.S. Degree
The School of Computing offers a combination Bachelor of Science/Master of Science degree in Computer Science.  This program allows students to earn a BS and MS in approximately five academic years.  The BS/MS can combine a BS in either Computer Science or Computer Engineering with an MS in either Computer Science or Computing.

Degree requirements are the same as those for earning a BS and MS separately, but there are two basic advantages:
a. Admissions decisions are made before senior year, so student can plan with certainty.
b. The synchronization barrier between the degrees is broken.  Hence, students may take graduate classes during their senior year, and undergrad classes during their fifth year. 

Students wishing to pursue the thesis option for their MS degree must also choose the thesis option for their BS. The Bachelor's Thesis will normally constitute a portion of the Master's Thesis. 

Applications for the BS/MS program are due on January 15th of the Junior year.  Program details and application materials are available in the BS/MS Handbook and on the School of Computing web page.

Computer Science Minor
The SOC offers a minor for students who need a background sufficient to use and program computers in another field.

Admission. In order to be admitted as a CS minor, a student must have a declared major in another department and be making progress in that major. The admission process is similar to that for majors and is carried out at the same time. Students are admitted to the minor if their average grade in Math 1210, and CP SC 1410/2420 is 2.8 or higher.

Computer science minors are guaranteed admission into only the 3000-level computer science courses that comprise the minor.

Computer science minors who wish to apply for full major status may do so by fulfilling the normal pre-major requirements and following the admission procedures described under Admission to Major Status above.

Requirements. The minor consists of a minimum of 18.5 semester hours of computer science classes.
The following 5 computer science courses are required:
CP SC 1010, Introduction to UNIX
CP SC 1410, Introduction to Computer Science I
CP SC 2420, Introduction to Computer Science II
CP SC 2100 Discrete Structures
CP SC 3500, Software Practice

In addition, students must complete one additional 3000-level computer science course.

Graduate Program
Degrees.
 M.S. and Ph.D. in Computer Science.

For detailed information about graduate degree requirements, contact the department directly or see the School of Computing graduate handbook available on the World Wide Web at www.cs.utah.edu/ dept/handbooks. For additional information, see also the Graduate Information section of this catalog.

Admission. The application process is described on the School of Computing web site at www.cs.utah.edu/admissions. Factors considered in admission to the M.S. and Ph.D. degree programs include the following: 1. School of Computing application form
2. Three letters of recommendation. Letters of recommendation should be filled out on the downloadable forms and mailed to us by the recommenders.
3. Personal statement: a brief letter describing your background, interests, and in particular your reasons for wanting to pursue graduate studies in computer science at the University of Utah.
4. Two official transcripts for each college or university you have attended. 5. GRE General Examination
6. TOEFL scores are required for all international students.
7. ETS will send TOEFL scores directly to the Admissions Office of the University.

Financial Aid. The School of Computing has attracted a large amount of external research funding in recent years, which means that most M.S. and Ph.D. students in good standing who have desired support have received it in the form of fellowships, research assistantships, and teaching assistantships. The school does not, however, guarantee support for all graduate students.

CS Course Descriptions