Computer Science

Kenneth Wiggins, Chair; Larry Aamodt, Jonathan Duncan, James Klein.

Computer science is the study of the representation, storage, and manipulation of information. The Department of Computer Science prepares its students for both graduate study and careers in computer science, system analysis and design, software engineering, and networking.

The department offers programs leading to the Bachelor of Arts, Bachelor of Science and Associate of Science degrees. The department cooperates with the School of Engineering in offering a computer engineering concentration in the Bachelor of Science in Engineering Degree. The School of Business and The Department of Computer Science jointly offer a major in information systems (B.S.).

The Bachelor of Science degree will prepare students for careers or graduate study in computer science. The Bachelor of Arts degree will prepare students for careers in fields applying computer information and technology. The Bachelor of Science in Engineering with a concentration in computer engineering will prepare students for careers or graduate study in both computer science and computer engineering.

COMPUTER SCIENCE MAJOR (Bachelor of Arts)

A student majoring in computer science must complete 47 quarter hours in the major, the required cognates, the general studies program, and all baccalaureate degree requirements as outlined in this bulletin. Senior students are required to take the MFT exam in computer science. Students planning to go to graduate school in computer science should also take the Graduate Record Examination, general and subject (Computer Science) sections.

Major Requirements:

CPTR

141

Introduction to Programming

4

CPTR

142, 143

Data Structures, Algorithms and Objects

4, 4

CPTR

215

Assembly Language Programming

3

CPTR

316

Programming Languages

4

CPTR

345

Theory of Computation

4

CPTR

352

Operating System Design

4

CPTR

454

Design and Analysis of Algorithms

4

 

 

Electives (8 must be upper division)

16

*Electives must be chosen in consultation with and approved by the academic adviser and will typically have one of the following prefixes: CIS, CPTR, ENGR, or MATH.

47

Cognates:

ENGR

354

Digital Logic

3

MATH

123

Survey of Calculus

 

 

or

 

4

MATH

181

Analytic Geometry and Calculus I

 

MATH

250

Discrete Mathematics

4

MATH

289

Linear Algebra and Its Applications

3

MATH

206

Applied Statistics

 

 

or

 

4

MATH

315

Probability and Statistics

 

COMPUTER SCIENCE MAJOR (Bachelor of Science)

A student majoring in computer science must complete the major core requirements, major cognate requirements, the general studies program, and all baccalaureate degree requirements as outlined in this bulletin. In addition, students must choose to complete one of three options. Senior students are required to take the Major Field Test. Students planning to go to graduate school in Computer Science should also take the Graduate Record Examination, general and subject (Computer Science) sections.

Computer Science Major (B.S.) Core and Cognate Requirements:

Core Requirements:

CPTR

141

Introduction to Programming

4

CPTR

142, 143

Data Structures, Algorithms, and Objects

4, 4

CPTR

215

Assembly Language Programming

3

CPTR

316

Programming Languages

4

CPTR

345

Theory of Computation

4

CPTR

352

Operating System Design

4

CPTR

454

Design and Analysis of Algorithms

4

CPTR

496, 497, 498

Seminar

3

 

 

 

34

Cognates:

ENGR

354

Digital Logic

3

MATH

181, 281, 282

Analytical Geometry and Calculus I-III

12

MATH

206

Applied Statistics

 

 

or

 

4

MATH

315

Probability and Statistics

 

MATH

250

Discrete Mathematics

4

MATH

289

Linear Algebra and Its Applications

3

EMBEDDED SYSTEMS CONCENTRATION

The Embedded Systems Concentration serves students who want a career that is focused on developing computer-based devices.

CPTR

350

Computer Architecture

4

CPTR

435

Software Engineering

4

ENGR

228

Circuit Analysis

4

ENGR

355

Embedded System Design

4

ENGR

433

Digital Design

4

 

 

*Electives (Must be CPTR)

8

 

 

 

28

SOFTWARE SYSTEMS CONCENTRATION

The Software Systems Concentration serves students who want a career as software developers and who want to become expert at developing large scale software, working in teams, and producing products that meet customer needs.

CPTR

235

Web Application Development

4

CPTR

301

Java and Object-Oriented System Design

4

CPTR

415

Introduction to Database Systems

4

CPTR

435

Software Engineering

4

 

 

Electives (4 must be upper-division CPTR)

12

28

PREPARATION FOR GRADUATE STUDY CONCENTRATION

The Preparation for Graduate Study Concentration serves students who want to prepare to enter professional training in a graduate program.

CPTR

350

Computer Architecture

4

CPTR

425

Introduction to Networking and Computer I/O

4

CPTR

445

Introduction to Artificial Intelligence

4

 

 

*Electives (4 must be upper-division CPTR)

16

28

 

*Electives must be chosen in consultation with and approved by the academic adviser and will typically have one of the following prefixes: CIS, CPTR, ENGR, or MATH.

 

COMPUTER ENGINEERING (Bachelor of Science in Engineering)

See the computer engineering concentration in the School of Engineering section of this bulletin.

INFORMATION SYSTEMS MAJOR (Bachelor of Science)

The information systems major is a joint program offered by the School of Business and the Computer Science Department. See the Interdisciplinary Programs section of this bulletin.

COMPUTER PROGRAMMING (Associate of Science)

A student specializing in computer programming must complete the area requirements, the required cognates, the general studies program, and all associate degree requirements as outlined in this bulletin.

Area Requirements:

CPTR

141

Introduction to Programming

4

CPTR

142, 143

Data Structures, Algorithms and Objects

8

CPTR

215

Assembly Language Programming

3

CPTR

235

Web Application Development

4

CPTR

301

Java and Object-Oriented System Design

4

 

 

*Electives

30

 

53

 

*Electives must be chosen in consultation with and approved by the academic adviser and will typically have one of the following prefixes: CIS, CPTR, ENGR, or MATH.

 

Cognates:

MATH

123

Survey of Calculus

 

 

or

 

4

MATH

181

Analytical Geometry and Calculus I

 

MATH

206

Applied Statistics

4

MATH

250

Discrete Mathematics

4

MATH

289

Linear Algebra and Its Applications

3

COMPUTER SCIENCE MINOR

A student minoring in computer science must complete 30 quarter hours chosen in consultation with and approved by the academic adviser from the following prefixes: CIS, CPTR, ENGR, MATH. Four credits must be upper division.

INFORMATION SYSTEMS MINOR

The information systems minor is a joint program offered by the School of Business and the Computer Science Department. See the Interdisciplinary Programs section of this bulletin.

COMPUTER SCIENCE COURSES (CPTR)

CPTR 110 PRINCIPLES OF COMPUTING 2

An introduction to the field of computing including the history and current trends of computing; social and ethical issues; hardware and software concepts; language, spreadsheet, and database applications; and the internet. Does not apply to major or minor in computer science. Does not apply toward a major in computer science.

CPTR 141 INTRODUCTION TO PROGRAMMING 4

Programming-in-the-small, introducing computer science principles and software engineering concepts for designing, coding, executing, and debugging within the C family of programming languages. Laboratory work required.

CPTR 142, 143 DATA STRUCTURES, ALGORITHMS AND OBJECTS 4, 4

Topics include lists, stacks, queues, trees, graphs, searching, sorting, and hashing using concepts of object-oriented programming, space-time efficiency, and software engineering. Team projects and laboratory work required. Prerequisite: CPTR 141.

CPTR 215 ASSEMBLY LANGUAGE PROGRAMMING 3

Introduction to computer architecture, machine language, and assembly language. Laboratory work required. Prerequisite: CPTR 141.

CPTR 235 WEB APPLICATION DEVELOPMENT 4

Introduction to web application development including UNIX systems software, web servers, database management systems, server - and client - side scripting languages, mark-up languages, and GUI design. Laboratory work and project required. Prerequisite: CPTR 141 or other programming experience. Offered even years only.

CPTR 301 JAVA AND OBJECT-ORIENTED SYSTEM DESIGN 4

Software design and construction in the context of Object-Oriented Programming libraries. Laboratory work required. Prerequisite: CPTR 143. Offered odd years only.

CPTR 316 PROGRAMMING LANGUAGES 3-4

Introduces a variety of programming language paradigms and their implementations. Computer science majors must take four hours. Computer engineering majors may take three hours. Laboratory work required. Prerequisites: CPTR 143.

CPTR 345 THEORY OF COMPUTATION 4

Study of the basic theoretical principles of computer science. Areas covered include Chomsky's Hierarchy of formal languages, grammars, and machines; computability by Turing machines and recursive functions, non-computability, and computational complexity. Emphasis on practical implications. Offered even years only.

CPTR 350 COMPUTER ARCHITECTURE 4

Study of the organization and architecture of computer systems with emphasis on the classical von Neumann architecture. Topics include instruction processing, addressing, interrupt structures, memory management, microprogramming, procedure call implementations, and multiprocessing. Laboratory work required. Prerequisites: CPTR 215, ENGR 354.

CPTR 352 OPERATING SYSTEM DESIGN 4

Principles of operating systems, process management, memory management, file system management, device management, resource allocation, security and protection. Laboratory work required. Prerequisite: CPTR 143, CPTR 215.

CPTR 355 COMPUTER GRAPHICS 4

Introduction to the production of graphical representations of 2- and 3-dimensional objects using the computer. Theory and application of affine matrix transformations to manipulate these objects. Subtopics include fractals and interated function systems (IFS tables), graftals, Beziér curves, stereopsis, animation and morphing. Pair programming and laboratory work required. Prerequisites: CPTR 141; MATH 117 or equivalent. Offered even years only.

CPTR 415 INTRODUCTION TO DATABASE SYSTEMS 4

Fundamental concepts, system organization, and implementation of database systems. The Relational data model, query languages; database design and normal forms. Laboratory work required. Prerequisites: CPTR 143, MATH 250. Offered odd years only.

CPTR 425 INTRODUCTION TO NETWORKING AND COMPUTER I/O 4

Concepts, principles, and implementation of modern computer I/O; networks, protocol layers, networking algorithms, and I/O programming. Laboratory work required. Prerequisite: CPTR 352.

CPTR 435 SOFTWARE ENGINEERING 4

Fundamentals of software engineering using a group project as the basic vehicle. Topics covered include software quality characteristics, the software engineering process, life cycles, and tools; the issues involved in building large software systems, professionalism, and ethics. Laboratory work required. Prerequisites: CPTR 143.

CPTR 445 INTRODUCTION TO ARTIFICIAL INTELLIGENCE 4

A survey of key concepts and applications of artificial intelligence (AI) with languages commonly used for building AI systems. Subtopics include propositional logic, knowledge representation, state space/searching, heuristic search, expert systems, expert system shells, natural language processing, and cognitive learning models. Team project and laboratory work required. Prerequisite: CPTR 143. Offered odd years only.

CPTR 454 DESIGN AND ANALYSIS OF ALGORITHMS 4

Application of techniques using asymptotic notations, unit costs, and recurrence relations to the analysis of algorithms. Covers basic design strategies by analyzing and implementing algorithms. Proof-of-correctness methods are presented. Examples of NP-complete and NP-hard problems are discussed. Laboratory work required. Prerequisites: CPTR 143 and MATH 250. Offered odd years only.

CPTR 460 PARALLEL AND DISTRIBUTED SYSTEMS 4

Concepts of distributed and parallel systems; parallel and distributed architectures, parallel programming languages, parallel algorithms. Programming in one or more high-level parallel language. Laboratory work required. Prerequisites: CPTR 143, MATH 289. Offered even years only.

CPTR 464 COMPILER DESIGN 4

Fundamentals of compilers and interpreters; symbol tables; lexical analysis, syntax analysis, semantic analysis, code generation, and optimization for general purpose programming languages. Laboratory work required. Prerequisite: CPTR 143, CPTR 215. Offered even years only.

CPTR 494 COOPERATIVE EDUCATION 0-2; 8

Individual contract arrangement involving students, faculty, and cooperating businesses to gain practical experience in an off-campus setting. Prerequisite: CPTR 143 and approval of major adviser one quarter in advance of registration. Graded S or NC.

CPTR 495 COLLOQUIUM 0

Presentation and discussion of current topics of interest within the computer science profession. Required each quarter of all Junior and Senior CS majors. Graded S or NC.

CPTR 496, 497, 498 SEMINAR 1, 1, 1

Presentation and discussion of current topics of interest within computer science. Each student is required to conduct an approved design project from conception to final oral and written reports. Prerequisite: Senior standing in computer science.

INFORMATION TECHNOLOGY COURSES (INFO)

INFO 250 SYSTEM SOFTWARE 1; 8

Study of system software from a user and/or administrative perspective. Topics vary and may be repeated for credit. Prerequisite: Permission of instructor.