Computer Science
Computing Services Center 212
541-552-6143
Dan Wilson, Chair
Computer science is an exciting and growing field with career
opportunities ranging from running a small business to working in big
industry, government, or education. The computer science major emphasizes
the current trend toward networking, computer security, and the Internet.
The capstone experience prepares students for the job market by providing
real-world work experience.
Degrees
BA or BS in Computer Science with an option in Computer
Information Science (CIS)
BA or BS in Computer Science with an option in Computer
Programming and Software (CPS)
BA or BS in Computer Science with an option in Computer Science
and Multimedia (CMM)
BA or BS in Computer Science with an option in Computer Security
and Information Assurance (CSIA)
MA or MS with an emphasis in Computer Science (CS)
Co-Major
Mathematics-Computer Science (see page 112 for a
description of this program)
Accelerated Baccalaureate Degree Program
Computer science majors may participate in the Accelerated
Baccalaureate Degree Program. For more information, see page
157.
Choosing a Major
Because computer science options are similar, students do not
need to choose one until their sophomore or junior year. Students
primarily interested in business information systems should choose the
CIS option, while those whose main interest is programming should opt
for CPS. CMM is available for students who want to combine multimedia
and computer science fundamentals. The CSIA option allows students to
focus on security and timely information transfer.
Requirements for Major
- Fulfill baccalaureate degree requirements as stated
beginning on page 21.
- Complete the core curriculum with a B or better in both
Programming I and Programming II. Computer science majors meet the
writing and research component (see page 25) by taking Programming
III (CS 258), Systems Software and Architecture (CS 326), and
Systems Analysis (CS 469).
- Choose the CPS, CIS, CMM, or CSIA option and complete the
additional core requirements for that option.
- For the CPS or CIS option, complete 16 additional credits
from computer science courses above the 250 level, as approved by
the faculty advisor. For the CMM option, complete 20 additional
credits above the 250 level with a CS prefix, as approved by the
faculty advisor.
- Maintain a GPA of at least 2.5 in the upper division
computer science courses.
Capstone
The capstone experience is a three-term sequence (Systems
Analysis, Capstone I, and Capstone II) that should be taken in the
senior year. Students prepare for, design, and implement a project
that solves a computer science or information systems problem. The
project should be of sufficient size to be useful and to give the
student a real-world experience, but it should also be small enough to
be completed in two terms.
Major Core Courses
Computer Science Courses
(36 credits)
| Programming I (CS 200) | 4 |
| Programming II (CS 257) | 4 |
| Programming III (CS 258) | 4 |
| System Software and Architecture (CS 326) | 4 |
| Networks I (CS 336) | 4 |
| Databases (CS 360) | 4 |
| Systems Analysis (CS 469) | 4 |
| Capstone I (CS 470) | 4 |
| Capstone II (CS 471) | 4 |
Math Courses
(4 credits)
| Elementary Statistics (Mth 243) | 4 |
Computer Programming and Software Option
Core
Computer Science Courses
(36 credits)
| Machine Structures and Assembly Language (CS
275) | 4 |
| C and UNIX (CS 367) | 4 |
| Data Structures (CS 411) | 4 |
| Compilers (CS 450) | 4 |
| Operating Systems (CS 459) | 4 |
| Electives in computer science above the 250
level | 16 |
Math Courses
(8 credits)
| Discrete Structures (Mth 235) | 4 |
| Calculus I (Mth 251) | 4 |
CPS majors interested in attending graduate school are
strongly encouraged to take Mth 252 and 261, or to consider a
mathematics-computer science co-major (see page 112).
Computer Information Science Option Core
Business Courses
(24 credits)
| Accounting Information I, II (BA 211,
213) | 8 |
| Principles of Marketing (BA 330) | 4 |
| Organizational Behavior and Management (BA
374) | 4 |
| BA upper division electives | 8 |
Computer Science
(20 credits)
| Advanced Databases (CS 460) | 4 |
| Electives in computer science above the 250
level | 16 |
Computer Science and Multimedia
(24 credits)
| Introduction to Multimedia (AM 233) | 4 |
Choose 12–20 credits from the following
courses:
| Design for Multimedia (AM 334) | 4 |
| Digital Video (AM 335) | 4 |
| Multimedia Authoring (AM 336) | 4 |
| Web Authoring (AM 337) | 4 |
| Web Interface Design, Graphics, and Animation (AM
338) | 4 |
| Careers in Multimedia (AM 343) | 4 |
| Selected Topics in Multimedia Seminar (AM
407) | 1–4 |
| Practicum in Multimedia (AM 409) | 1–6 |
Choose up to 8 credits from the following courses,
selected with advisor consent:
| Advanced Field Production (VP 315) | 4 |
| Applied Editing Techniques for Field and Studio
Production (VP 375) | 4 |
| Digital Studio (Art 250) | 4 |
| Digital Interactive Studio (Art 351) | 4 |
| Digital Animation Studio (Art 352) | 4 |
| Digital 3D Modeling and Lighting Studio (Art
353) | 4 |
| Digital 3D Animation Studio (Art 354) | 4 |
| Computer Applications in Chemistry (Ch
371) | 3 |
| Computer Imaging (CS 315) | 4 |
| Computer Graphics I (CS 316) | 4 |
| Computer Graphics II (CS 416) | 4 |
| Technology and Learning (Ed 320) | 3 |
Note: 20 additonal credits with a CS prefix above the
250 level. CS 316 and 416 cannot count for the additional 20
credits and for multimedia credits.
Computer Security and Information
Assurance
Computer Courses
(36 credits)
| C and Unix (CS 367) | 4 |
| Data Structures (CS 411) | 4 |
| Systems Administration in Unix (CS 426) | 4 |
| Secure Programming (CS 367) | 4 |
| Networks II (CS 436) | 4 |
| Wireless Networks (CS 446) | 4 |
| Security I (CS 456) | 4 |
| Security II (CS 457) | 4 |
| Security III (CS 458) | 4 |
Math Courses
(8 credits)
| Discrete Structures (Mth 235) | 4 |
| Calculus I (Mth 251) | 4 |
Other Courses
(8 credits)
| Information Technology: Legal and Ethical Issues (Phl
310) | 4 |
| Computer Forensics (CCJ 346) | 4 |
Minor
(28 credits)
| Elementary Statistics (Mth 243) | 4 |
| Programming I (CS 200) | 4 |
| Programming II (CS 257) | 4 |
| Programming III (CS 258) | 4 |
| System Software and Architecture (CS 326) | 4 |
| Networks I (CS 336) | 4 |
| Databases (CS 360) | 4 |
Students need at least a 2.5 GPA in the required
courses.
Graduate Program
The graduate program in Computer Science prepares students
for a career in industry, although students with strong research
interests are prepared to pursue PhD programs at another institution.
A set of practical courses build on the knowledge gained from
undergraduate coursework in computer science. Students work with an
advisor to create a program plan. With proper planning, it is possible
to graduate in one year, although many students take longer. Graduate
assistantships that provide tuition and a stipend are
available.
The graduate program allows students to work individually
with a faculty advisor in an area of personal interest. The faculty
specialize in such areas as databases and data mining, GIS, computer
graphics, game programming, distributed systems, Internet applications,
computer security, and forensics. Graduate students have opportunities
to teach and consult, participate in faculty research, plan curriculum,
and enjoy department social events.
Admission Requirements
Students must meet the University admission criteria and
then be approved by the department for admission to the graduate
program. Applications are reviewed on an on-going basis. See page 164
in this catalog for the University admission policies. The department
evaluates applications on the basis of:
- Undergraduate preparation in computer
science
- Undergraduate GPA
- GRE general test scores
- A statement of objectives
- Three letters of recommendation from
faculty
A good undergraduate preparation in computer science is
required for admission to the program; however, an undergraduate
degree in computer science is not necessary. Students with
undergraduate coursework covering the following topics will be well
prepared to enter the program.
- Advanced Programming
- Data Structures
- Operating Systems
- Databases
- Networking
- Computer Organization
- Probability and Statistics
- Calculus
A student who does not have the necessary undergraduate
coursework may apply for admission as a post-baccalaureate student
to can take the necessary courses. Upon successfully completing the
prerequisite courses, a student may apply for graduate student
status.
Degree Requirements
All students must complete a minimum of 45 credits of
approved graduate coursework. These must include:
- Three graduate-only courses in the computer science
department for a total 12 credits.
- 18-36 graduate credits taken within the Computer
Science Department. These may include cross-listed
courses.
- 9-27 graduate credits from support-area departments.
These may include cross-listed courses. Support-area departments
are those approved by a student's graduate advisor.
- A minimum of 23 credits of coursework within the
Computer Science Department.
- Complete either a project or a thesis. Both require a
successful defense before a graduate committee comprised of at
least three faculty members chosen by the student and one
appointed by the graduate council.
Computer Science Courses
See Course Prerequisites PolicyLower Division Courses
| CS 109 Practicum |
| 1 to 2 credits |
| CS 115 Microcomputer Applications I |
| 4 credits |
| This introductory, hands-on course surveys computer applications, including operating systems, word processors, spreadsheets, and databases. |
| CS 199 Special Studies |
| Credits to be arranged |
| CS 200 Programming I |
| 4 credits |
| Introduces programming, including fundamental control and data structures. |
| CS 209 Practicum |
| Credits to be arranged |
| CS 226 An Introduction to UNIX |
| 4 credits |
| Introduces nonmajors to UNIX. Topics may include the characteristics of multiuser systems, ways to get help, remote access, the UNIX file system, UNIX commands, editing, and mail, with an introduction to command files and programming in UNIX if time permits. Programming experience recommended. Note: Students who have already taken CS 426 may not receive credit for this course. |
| CS 257 Programming II |
| 4 credits |
| Introduces object-oriented programming. Reinforces the fundamental control and data structures of computer science and introduces data abstraction, classes, objects, polymorphism, and inheritance. Prerequisite: CS 200. |
| CS 258 Programming III |
| 4 credits |
| Covers pseudocode, program documentation, input, output, generic methods, exception handling, and an object-oriented introduction to data structures. Prerequisite: CS 257. |
| CS 275 Machine Structures and Assembly Language |
| 4 credits |
| Uses assembly language concepts to illustrate machine architecture and the translation of features in higher level programming languages. Discusses hardware features and capabilities and introduces direct video access and simple interrupt processing. Prerequisite: CS 257. |
Upper Division Courses
| CS 310 Information Technology: Legal and Ethical Issues |
| 4 credits |
| Inquires into the ethical and legal implications of the products, activities, and behaviors of digital technology users, emphasizing U.S. laws and technology. Examines digital works, copyright laws, software, business practice patents, and a few significant court cases that raise fundamental constitutional issues. Enables students to understand the complex morals and laws surrounding digital technology and to be able to form sound moral and legal positions in the digital world of the twenty-first century. Prerequisite: Completion of all lower division General Education requirements. Approved for General Education (Synthesis). (Cross-listed with Phl 310.) |
| CS 312 Simulation |
| 4 credits |
| Examines theoretical and practical foundations of the science of computer simulation. Studies simulations of discrete and continuous systems. Assigns projects using standard higher programming languages as well as currently available simulation languages. Prerequisites: CS 257 and Mth 243. |
| CS 315 Computer Imaging |
| 4 credits |
| Introduces basic image-processing techniques, file formats, display methods, and the importance of imaging in the business and scientific communities. Topics include point, area, and geometric processing techniques; convolution techniques; and image enhancement. Prerequisite: CS 257 or equivalent programming experience. |
| CS 316 Computer Graphics I |
| 4 credits |
| Introduces computer graphics and develops a graphics kernel system for use in several graphics projects. Presents the use of matrices to effect transformations of graphics displays, perspective, clipping, scaling, and hidden line techniques. Prerequisite: CS 367. |
| CS 321 Computer Architecture |
| 4 credits |
| Investigates various philosophies for defining hardware and software interfaces within the computer system. Includes an introduction to general topics in computer architecture and organization, followed by a survey of representative case studies. Includes advanced topics such as interrupts, synchronization, fault-tolerant computing, and performance analysis. Prerequisite: CS 275. |
| CS 326 Systems Software and Architecture |
| 4 credits |
| Offers a functional, systems-level review of computing equipment and the organization of components and devices into computer architectural configurations. In addition to learning how to configure computer systems, students complete a research paper and presentation on some component within a computer system. Prerequisite: CS 200. Corequisite: CS 326L. |
| CS 336 Networks I |
| 4 credits |
| Surveys local area network (LAN) systems with a focus on data communications. Explores serial transmission, LAN setup and administration, communication models (e.g., TCP and OSI), and protocols. Prerequisite: CS 257. |
| CS 345 End User Computing |
| 4 credits |
| Introduces the information center concept and its methods for system configuration, as contrasted with the traditional life cycle development methodologies. Includes information center techniques for providing consultation and assistance in the assembly and testing of systems components. Prerequisite: CS 257. |
| CS 346 Computer Forensics |
| 4 credits |
| Surveys the technologies, techniques, and responsibilities of a criminal or civil investigation involving computers, networks, network service providers, and electronic evidence. Explores the ways a computer or a computer network can be associated with a crime. Examines rules of evidence and proof and emphasizes maintaining an evidentiary trail through computer data and network activity. Reviews the responsibilities of the computer forensics investigator, the fragility of computer evidence, and the techniques used to protect evidence. Prerequisite: Completion of all lower division General Education requirements. Approved for General Education (Synthesis). (Cross-listed with CCJ 346.) |
| CS 352 Programming Languages |
| 4 credits |
| Offers a formal definition of programming languages, including the specification of syntax and semantics. Covers simple statements, such as precedence, infix, prefix, and postfix notation. Examines the global properties of algorithmic languages, including the scope of declarations, storage allocation, statement grouping, binding time of constituents, subroutines, co-routines, and tasks. Prerequisite: CS 258. |
| CS 356 Programming Topics |
| 3 to 2 credits |
| Explores programming in different languages. Topics are based on interest and need. Offerings may include Web programming and C++. Repeat credit is allowed for different topics. Prerequisites and credits determined by topic. |
| CS 360 Databases |
| 4 credits |
| Introduces the concepts necessary for designing and implementing database systems. Emphasizes data modeling, normalization, and SQL. Prerequisite: CS 257. |
| CS 367 C and UNIX |
| 4 credits |
| Explores concepts of the UNIX operating system and the C programming language. Students learn how to use a UNIX operating system and to program in C on the UNIX operating system. Prerequisite: CS 258. |
| CS 380 Advanced Visual BASIC |
| 4 credits |
| Introduces advanced topics in the Visual BASIC language. Emphasizes access to databases and relational database concepts, database controls, network controls, and optional Visual BASIC program formats, such as DLLs and EXEs. Covers the creation of classes and class modules in Visual BASIC. Addresses net programming and use of the Windows API. Prerequisites: CS 336 and CS 360. |
| CS 399 Special Studies |
| Credits to be arranged |
| CS 401/501 Research |
| Credits to be arranged |
| CS 403/503 Thesis |
| Credits to be arranged |
| CS 405/505 Reading and Conference |
| Credits to be arranged |
| CS 407/507 Seminar |
| Credits to be arranged |
| CS 409/509 Practicum |
| Credits to be arranged |
| CS 411/511 Data Structures |
| 4 credits |
| Develops data structures, with an emphasis on algorithms, characteristics, and applications. Examines alternative algorithms for manipulating data structures and their complexity. Applications include data management systems, file organization, information retrieval, and list processing. Prerequisite: CS 258. |
| CS 416/516 Computer Graphics II |
| 4 credits |
| Continues study of computer graphics started in CS 316. Offers techniques to create displays with hidden line removal, as well as shading, shadows, and stereographics. Develops ray tracing. Prerequisite: CS 316. |
| CS 418/518 Theory of Computation |
| 4 credits |
| Covers formal language and automata theory from finite state automata to Turing machines. Presents the Chomsky hierarchy of languages and the relationship between languages and automata. Prerequisite: CS 411. |
| CS 426/526 UNIX System Administration |
| 4 credits |
| Introduces UNIX and shell programming, start-up and shut down, user administration, file systems, controlling processes, adding disks and cron, configuring the kernel, SLIP, PPP, and security. Prerequisites: CS 336 and CS 367. |
| CS 432/532 Client-Server |
| 4 credits |
| Studies application design from a distributed processing perspective. Focuses on server-side programming using CGI scripts and application objects. Examines the issues involved in migrating traditional client-server applications to the Web. Prerequisites: CS 336 and CS 360. |
| CS 433/533 Corporate Web Development |
| 4 credits |
| Introduces XML, XSL, and XQL. Examines e-commerce, digital money, and data encryption. Students are required to work on an e-commerce project as part of the course. Prerequisite: CS 432. |
| CS 436/536 Networks II |
| 4 credits |
| Continues Networks I. Offers an in-depth study of network administration. Topics may include Internet access, distributed programming methods, routing, congestion control, security, RPC, name resolution, message-based distributed applications, and Internet architectures. Prerequisite: CS 336. |
| CS 446/546 Wireless Networks |
| 4 credits |
| Examines the world of wireless communication. Starting with the fundamentals of the generation and propagation of electromagnetic waves, it surveys information transmission techniques such as spread spectrum and phase shift keying, wireless LANs, personal networks, and cellular and satellite systems. Prerequisite: CS 336. |
| CS 450/550 Compilers |
| 4 credits |
| Introduces compiler construction. Students create a compiler for a mini-language. Topics include grammars, lexical analysis, parsers, parser generators, code generation, and code optimization. Prerequisites: CS 367 and Mth 235. |
| CS 455/555 Topics in Computer Science |
| 3 to 2 credits |
| Explores selected topics in computer science. Topics are offered based on interest and need. Repeat credit is allowed for varying topics. Prerequisites and credits are determined by topic. |
| CS 456/556 Security I |
| 4 credits |
| Introduces the many facets of computer security and information assurance. Explores the security organization and infrastructure within an organization along with policies, standards, and procedures. Covers cryptographic protocols, modes, and algorithms, including DES, AES, RSA, and Kerberos. Prerequisite: CS 336. |
| CS 457/557 Security II |
| 4 credits |
| Covers techniques and principles of design and configuration of secure workstations, servers, and LANs. Presents system and LAN intrusion detection and data assurance monitoring. Discusses the basics of virtual private networks and perimeter protection as well as systems and tools used for implementation. Prerequisite: CS 456. |
| CS 458/558 Security III |
| 4 credits |
| Studies the threats to computer systems connected to the Internet. Examines how crackers find a system and its vulnerabilities, then use those vulnerabilities to compromise the system, including the use of viruses. Looks at various tools used to attack and defend systems as well as resources to detect and analyze intrusions. Addresses both wired and wireless systems security. Prerequisite: CS 457. |
| CS 459/559 Operating Systems |
| 4 credits |
| Explores operating systems and components, operating characteristics, user services, and limitations. Covers implementation techniques for processing input-output and interrupt handling; overall structure of multiprogramming systems or multiprocessor configurations; and details of addressing techniques, core management, file system design and management, system accounting, and other user-related services. Prerequisite: CS 367. |
| CS 460/560 Advanced Databases |
| 4 credits |
| Introduces integrity constraints and triggers, stored procedures, indexing and index structures, transactions, concurrency, locking, and Web databases. Students usually work on a major project during the term. Prerequisite: CS 360. |
| CS 462/562 Database Administration |
| 4 credits |
| Examines the tasks involved in administering a large and complex database management system (DBMS). Teaches hands-on techniques for installing, setting up, and maintaining a production database. Students use a popular DBMS (e.g., Oracle) to understand the concepts of managing structures, logs, data files, and users. Also prepares students to take the appropriate database administration (DBA) certification exams. Prerequisite: CS 460. |
| CS 467/567 Secure Programming |
| 4 credits |
| Explores the major security issues in writing software. Topics include buffer overflows, access control, race conditions, randomness, input validation, and passwords. Teaches the importance of planning for security and some of the compromises involved in addressing security issues. Prerequisite: CS 367. |
| CS 469/569 Systems Analysis |
| 4 credits |
| Covers both classical and current ideas in systems analysis, including lifecycle models, data analysis models, data-flow diagrams, entity-relationship diagrams, and object models. Students participate in a software development process and write a research paper on the merits of alternative solutions to a software development problem. Must have a 2.5 GPA in computer science classes. Prerequisites: CS 258 or CS 380; CS 326; CS 336; and CS 360. |
| CS 470/570 Capstone Project I |
| 4 credits |
| Provides a problem for students to analyze and solve through the design of a solution, the creation and implementation of a software solution, and documentation of the entire process. Project I involves project selection and completion of the design phase. Prerequisite: CS 469. |
| CS 471/571 Capstone Project II |
| 4 credits |
| The Capstone II goal is for students to finish the work started in Capstone I by creating and implementing the software solution and completing the documentation. The documentation should address project maintenance and the operating procedures required to run the students software. Prerequisite: CS 470. |
Graduate Courses
| CS 581 Topics in the Foundations of Computer Science |
| 4 credits |
| Covers selected topics in the foundations of computer science. Sample topics include analysis of algorithms, computational models, and programming languages. |
| CS 582 Topics in Information Systems |
| 4 credits |
| Explores selected topics in information systems. Sample topics include database systems, networking and the Internet, and creating business frameworks. |
| CS 583 Topics in Software Engineering |
| 4 credits |
| Covers selected topics in software engineering. Sample topics include metrics, design methodologies, and quality assurance. |