SOU HOME ACADEMICS  CAMPUS COMMUNITY  SOU TODAY  FIND IT 
 search SOU: 
DegreesChoosing a MajorRequirements for MajorMinorGraduate ProgramComputer Science Courses
Department picture

Computer Science

Computing Services Center 212
541-552-6143
Dan Wilson, Chair

Professor
Daniel Wilson
Associate Professor
Daniel Harvey
Rahul Tikekar
Assistant Professor
Tom Bacon
Peter Nordquist
Greg Pleva
Kevin Sahr
Adjunct Faculty
Lynn Ackler
Emeritus Faculty
George Converse
Lee Hill
Ken Larson
Robert McCoy
Richard Peddicord

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

  1. Fulfill baccalaureate degree requirements as stated beginning on page 21.
  2. 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).
  3. Choose the CPS, CIS, CMM, or CSIA option and complete the additional core requirements for that option.
  4. 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.
  5. 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 level16

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 electives8

Computer Science


(20 credits)

Advanced Databases (CS 460)4
Electives in computer science above the 250 level16

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:

  1. Undergraduate preparation in computer science
  2. Undergraduate GPA
  3. GRE general test scores
  4. A statement of objectives
  5. 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.

  1. Advanced Programming
  2. Data Structures
  3. Operating Systems
  4. Databases
  5. Networking
  6. Computer Organization
  7. Probability and Statistics
  8. 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:

  1. Three graduate-only courses in the computer science department for a total 12 credits.
  2. 18-36 graduate credits taken within the Computer Science Department. These may include cross-listed courses.
  3. 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.
  4. A minimum of 23 credits of coursework within the Computer Science Department.
  5. 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 Policy

Lower 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.