Computer Science Courses
Computer Science Course Descriptions
*The degree requirements listed below are considered a draft until fully approved through the Western Oregon University curriculum process.
► CS 101 Computers and Society (3)
An introduction to the computer’s role in society. The student will become familiar with current computer terminology and will use applications software, including a word processor.
► CS 121 Computer Applications (2)
Class covers standard office applications for a personal computer. Currently the class uses the Microsoft Office suite of applications and includes intermediate Microsoft Word, basic and intermediate Microsoft Excel and basic Microsoft Access. As time permits, presentation software (Microsoft Power Point) and Web page editing software (Microsoft FrontPage).
► CS 122 Introduction to Computer Science for Non-Majors (3)
History and overview of fundamental concepts of computer science. Topics include: introduction to computer hardware and the role of an operating system; data communications and networks; the history and future of the internet and the World Wide Web; issues in computer privacy, computer security, computer ethics and computer crime; buying and upgrading a personal computer system; and careers in computing.
► *CS 123 Introduction to Information Systems (4)
This course introduces students to contemporary information systems and demonstrates how these systems are used in organizations. This course focuses on the key components of information systems—people, software, hardware, data, and communication technologies—and how these components are integrated and managed for organizational advantages. Students gain an understanding of how information is used in organizations and how information technology improves quality, speed, and agility. This course also introduces systems development, technology acquisition, and various types of applications common in modern organizations and society.
► CS 125 Introduction to Computer Game Development (4)
Gentle introduction to computing. Students will be exposed to fundamentals of programming by building digital/computer games using a high level game development framework; no prior programming experience required. Students will gain insights into how programs are designed and developed; learn about the software engineering process; and improve problem solving skills by creating a digital/computer game. Students will design and develop a digital game at a level appropriate for their background and experience.
► CS 126 Introduction to Smart Phone App Development (4)
Gentle introduction to computing. Students will build mobile apps for phones and tablets using the visual language “app inventor”; no prior programming experience required. Students will gain insights into how programs are designed and developed; learn about the software engineering process; and improve problem solving skills by creating a smart phone or tablet application.
► CS 127 Introduction to Multimedia Programming (4)
Introduction to sound synthesis using the Pure Data programming language. Students will become familiar with basic digital audio and signal processing techniques in a visual programming environment. Generative sound design and production processes will be explored with examples applicable to game development, music composition and sound effect creation.
► CS 133 Introduction to Python Programming (4)
Introduces students to computer programming using the Python language. Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python combines power with clear syntax. Its standard library is large and comprehensive. Python supports multiple programming paradigms, primarily but not limited to, object-oriented, imperative and, to a lesser extent, functional programming styles.
► CS 134 Perl Programming (4)
Introduces students to the Perl programming language. Through lecture and hands-on lab exercises, students learn how to use simple Perl scripts to tackle contemporary applications of Computer Science and Information Systems.
► *CS 137 Introduction to MATLAB Programming (4)
This course introduces students to technical computing using the MATLAB platform. MATLAB is an all purpose interactive computing environment that seamlessly integrates a high-level programming language expressly designed for technical computing with a plethora of domain specific tool boxes and real time hardware integration. A variety of computational tasks will be examined including simulation and data analysis problem types.
► *CS 160 Survey of Computer Science (4)
Explores the disciplines and professions of Computer Science and Software Engineering. Overviews computer hardware and software architecture, the study of algorithms, software design and development, data representation and organization, problem-solving strategies, ethics in the digital world, and the history of computing and its influences on society. Explores career options and begins the process of planning a program of study. Exposes students to both low-level and high-level programming languages.
► *CS 161 Computer Science I (4) – Prerequisite: CS 160 and MTH 231 or concurrent
This course is an introduction to computer science using java language. The emphasis will be on object-oriented design. Important concepts such as object interaction, testing, and documentation will also be addressed. This class is the first class of a two class sequence, with the same book being used for both classes. The goal for this quarter is to complete part I of the textbook (chapters 1 through 7). Attendance at the weekly labs is quite important as the book is best used as a lab manual. Note that the software used in this class—the BlueJ environment and the Java SDK—are both free for downloading. Prerequisite: CS 160 and MTH 231 or current
► *CS 162 Computer Science II (4) – Prerequisites: CS 161 and MTH 232 or concurrent
Second term in the 161-162 sequence that provides students with a foundation in software development and computer programming. Includes advanced object-oriented programming concepts, GUI and event driven programming, file I/O, recursion, and further explorations of the language libraries. In this class students apply the fundamental programming concepts gained in the CS161 to create more complex programs. Additionally, new concepts and tools are introduced, including tools that help in the construction of larger, more durable programs that can be used for practical applications. Prerequisite: CS161 and MTH 232 or current
► *CS 195 Fundamentals of Web Design (4)
► CS 199 Computer Science Topics (1-6)
Course content will vary. Topics are selected relative to new subject areas in computer science appropriate to freshmen level.
► *CS 260 Data Structures I (4) – Prerequisites: CS 162 and MTH 232
This course studies the merge of abstract data types (ADT’s) and the algorithms which manipulate them. Topics include the study of elementary searching and sorting algorithms, stacks, queues, lists, trees, graphs, hash tables and implementation strategies for these common ADT’s. This course also introduces complexity analysis, asymptotic measures, and resource consumption including the tradeoff between time and space. For each data structure examined, common algorithms which utilize the structure will be studied and “Big O” complexity analysis discussed for each algorithm. Requires completion with a C or better grade in both CS162 and MTH 232.
► CS 262 Programming Languages (2) – Prerequisites: CS 162
Computer applications using the language designated. Prerequisite: CS 162
► CS 271 Computer Organization (4) – Prerequisite: CS 162
Logical organization, computer hardware, introduction to assembly and machine language programming. Prerequisite: CS 162
► CS 299 Topics in Computer Science (1-6)
Course content will vary. Topics are selected relative to new subject areas in computer science appropriate to sophomore level.
► *CS 340W Ethics and Information Management (4) – Prerequisite: WR 122 or WR 135 and junior standing
Acquaints students with the contemporary or possible future moral problem that might arise due to computerization. Gives students a deeper understanding of the nature of morality or the nature of society. Helps students understand the relationship between deep human needs, socioeconomic institutions, and technology. Must have Junior standing. Prerequisites: Passing grade in WR 135 and/or WR 122
► CS 355 UNIX Fundamentals (3) – Prerequisite: CS 162
Introduction to the UNIX operating system. Emphasis on using a UNIX-based or a Linux- =based computer and some basic system administration tasks. Covers fundamental UNIX commands and utilities, including the use of a text editor and a mail handler, configuring a shell, the UNIX file system organization, managing processes in a multiprocessing system and writing simple shell scripts. This class assumes no previous experience with the UNIX operating system. Prerequisite: CS 162
► *CS 360 Programming Languages (4) – Prerequisites: CS 260 and CS 271
This course will provide a comparative study of programming language paradigms and their application. Paradigms studied include Imperative, Functional, Logic, and Object Oriented languages. Modern scripting languages that are categorized under multiple paradigms are included. Students will learn how to approach problems from the viewpoint of each paradigm. Similarities and differences in syntax, control structures, types, scoping rules and execution model will be highlighted. The specific languages studied are selected by the instructor and may vary from year to year. Prerequisite: CS 260 and CS 271
► *CS 361 Algorithms (4) – Prerequisites: CS 260 and MTH 354
Course covers fundamental algorithms and data structures used to solve a variety of problems. These include searching, advanced sorting, graphs, strings and algorithms for solving other hard problems. Develops and explores algorithm design strategies such as divide and conquer, dynamic programming, greedy approaches and backtracking. Algorithm analysis is developed at a more advanced level and includes analysis of recursive algorithms. Covers the classification of algorithms by computational complexity and an introduction to the theory of computation including automata, Turing machines and formal languages. Prerequisites: CS 260 and MTH 354
► CS 362 Introduction to Relational Database Systems (4) – Prerequisite: CS 262
Basic concepts of relational databases, covering relational model, normalization, and information maintenance and information retrieving through SQL. Other topics include: the history of data processing, database management systems and their vendors, and trends in the area of data processing. Prerequisite: CS 262
► *CS 363 Information Assurance and Security (4) – Prerequisites: CS 260 and CS 271
This course provides an introduction to the fundamental principles and topics of Security. It will introduce cryptography, malware or virus, operating system security, attacks and preventions of protocols, and programming security. Students gain hands-on experiences via labs and projects. Prerequisite: CS260 and CS271
► *CS 364 Information Management (4) – Prerequisites: CS 260 and CS 271
The course discusses what is information, why it is necessary to manage it, database systems (both relational and non-relational), SQL, relational algebra, normalization, data modeling, and the trends. Prerequisites: CS260 and CS 271
► *CS 365 Operating Systems and Network (4) – Prerequisites: CS 260 and CS 271
This course provides an introduction to Operating Systems as managers of systems resources and networking fundamentals. Management of tasks, memory, and peripheral devices is explored. Topics include task synchronization, message handling, scheduling, dispatching, network communications and protocols. Students gain hands-on experiences via labs and projects. Prerequisite: CS 260 and CS271.
► CS 399 Topics in Computer Science (1-6)
Course content will vary. Topics are selected relative to new subject areas in computer science appropriate to junior level.
► CS 406 Special Topics (1-4)
Course offered on an individual student basis. It is designed to support students in investigating the application of programming methods to problems related to their declared major.
► CS 407 Seminar (1-4)
Terms and hours to be arranged.
► CS 408 Workshop (1-4)
Terms and hours to be arranged.
► CS 409 Practicum (1-4)
Offers practical experience working in a computer science department for area businesses and industries. Eligible for the RP grade option.
► CS 440 Analysis of Algorithms (3) – Prerequisites: CS 311 and CS 345
A variety of algorithms are examined in terms of their demands on the resources of space and time. The techniques for doing a detailed algorithm analysis are covered. Prerequisite: CS 311
► CS 445 Theory of Computation II (3) – Prerequisites: CS 311 and CS 345
This course explores the mathematical foundation of computer science. The various levels of automata theory are covered along with their deterministic and non-deterministic counterparts. Prerequisites: CS 311 and CS 345
► CS 447 Compiler Design (3) – Prerequisites: CS 311 and CS 345
This course includes the theoretical discussion of the complexities of a modern compiler, along with the examination of the algorithms necessary to implement the same. Programming tools such as LEX and YACC may be used. All phases of a compiler are implemented. Prerequisites: CS 311 and CS 345
► CS 449 Topics in Computational Theory (3)
This course covers topics of special or current interest in the area of computational theory that are not covered in other courses.
► CS 453/553 Data Mining & Data Warehousing (3/4) – Prerequisite: CS 420
Course discusses the techniques most commonly used in the analysis of large volumes of data, often referred to as Big Data issues or BI, in the extraction of knowledge from this data, and in making decisions based on the knowledge acquired. Hands-on course to learn how to build a data warehouse and how to conduct data mining. Prerequisite: CS 420
► CS 459 Topics in System Management (3)
Topics of special or current interest in system management not covered in other courses.
► *CS 460 Software Engineering I (4) – Prerequisites: CS 361 and CS 364
This course covers an introduction to the fundamental principles and practices of software engineering. Covers both theory and practical aspects of the first activities of large, group-developed software projects, including tools and environments, software requirements engineering, introduction to software architecture, design and modeling and modern software processes. Students will learn the specific languages, tools, environments and processes necessary to complete the remainder of the capstone course. Computer Science majors must complete the required senior capstone courses in sequence: CS 460 then CS 461 and finally CS 462. Prerequisites: CS 361 and CS 364
► *CS 461 Software Engineering II (4) – Prerequisite: CS 460
This course emphasizes teamwork in small groups to develop real-world software applications. Teams and individual members will participate in all activities of software development, including project planning, requirements analysis, design, coding, testing, configuration management, quality assurance, documentation, and deployment. Topics in CS461 will focus on software lifecycle processes, software design, software construction, and engineering management concepts expanding on material from CS460. This course provides a capstone experience that integrates knowledge gained in rest of the CS curriculum through work on both team and individual projects. The second term of a 3-term sequence (CS460, CS461, CS462). Requires co-enrollment in CS461L, which is the team project component of the course. Prerequisites: CS460
► *CS 462 Software Engineering III (4) – Prerequisite: CS 461
A continuation of the CS460 and CS461 capstone course sequence where students focus on the construction and implementation of both individual and team developed software projects. The emphasis in CS462 is on applying contemporary software development methods, testing, verification, validation, reliability, software evolution, and software deployment. This course concludes the capstone experience that integrates knowledge gained in rest of the CS curriculum through work on both team and individual projects; public presentations of both team and individual projects are part of the course requirements. The third term of a 3-term sequence (CS460, CS461, CS462). Requires co-enrollment is CS462L which is the team project component of the course. Prerequisites: CS461 & CS461L
[section=CS 469 Topics in Information Assurance (3)]
Covers topics of special or current interest in the area of computer security that are not covered in other courses.
► CS 472 Operating Systems – Advanced Topics (3) – Prerequisite: CS 372
Project-oriented course for senior computer science majors who wish to explore advanced program development techniques utilizing operating system services. Hands-on experience in advanced development of applications focusing on the development of distributed and client/server applications. Prerequisite: CS 372
► CS 474 Concurrent Systems (3) – Prerequisite: CS 311
Study of parallel architecture and parallel programming paradigms. A comparison of large grain and fine grain programming methods. Topics also include: process creation and termination, shared and private data, scheduling algorithms and interprocess communication. Prerequisite: CS 311
► CS 477/577 Open Source Software Development (3/4) – Prerequisite: CS 260 or IS 320
Designed to engage students in Open Source Software (OSS) development to promote real world skills in software development. Provides students with resources that enable them to engage in an OSS project that gives them an opportunity to gain experience in software development that may be recognized by potential employers. Prerequisite: CS 260 or IS 320
► CS 479 Topics in Software Engineering (3)
Course covers topics of special or current interest in the area of software engineering that are not covered in other courses.
► *CS 481 Computer Graphics (4) – Prerequisite: CS 260 (MTH 341 recommended)
Fundamentals of modern 3D interactive computer graphics. Covers fundamental graphics algorithms for modeling, rendering, lighting and shading as well as the operations of GPU hardware and a modern programming API such as OpenGL. Prerequisites: CS 260 (MTH 341 recommended)
► CS 482 Modeling and Simulation (3) – Prerequisite: CS 260
Design and construction of computer models. Use of these models will be used to simulate the behavior of the modeled system:
- To better understand the system,
- Predict how it might behave under different circumstances.
- Find ways to improve the “performance” of the system. Covers both discrete and continuous system models. Study of the process of “translating” one’s mental models into a computer modeling language in order to perform simulations.
Prerequisite: CS 260
► CS 484 Neural Networks (3) – Prerequisite: CS 311
Explores computation in massively interconnected networks of simple, autonomous processing elements. Students will complete individual projects exploring the computational properties of neural networks. Students are expected to be comfortable with calculus and simple matrix operations. Prerequisite: CS 311
► CS 487 File Forensics (4) – Prerequisites: CS 271 and CS 372
Introduces digital investigation. Covers the analysis of data structures of files, as well as storing and retrieving files in different operating systems, such as DOS, Windows, MacOS, and Unix. Prerequisites: CS 271 and CS 372
► CS 490 Physical Computing (3) – Prerequisite: CS 272
Course takes computing out of the ‘box’ and shows it how it can interact with the physical world. Physical computing systems commonly include a micro controller or single-board computer, interface systems and various sensors and output devices, e.g. motors and switches. Students will learn the operation and programming of such systems for effective use. Previous experience with C and or C++ programming language is recommended. Prerequisite: CS 272
► CS 600 Fundamentals of Computer and Information Systems (4)
Topics include systems theory, computing systems components and systems development.
► CS 603 Thesis, Professional Project (1-9)
Terms and hours to be arranged.
► CS 606 Special Topics (1-4) – Prerequisites: CS 600 and CS 610
Course is to be offered on an individual student basis. It is designed to support students who need to investigate topics not covered in existing courses. Prerequisites: CS 600 and CS 610
► CS 607 Special Topics (1-4) – Prerequisites: CS 600 and CS 610
Special course offerings. Prerequisites: CS 600 and CS 610
► CS 609 Practicum (1-9)
Credit for a practical work experience where advanced computer science skills are developed and/or utilized.
► CS 610 Programming Languages (4)
Become familiar with high level programming languages and develop competency in an object-oriented programming language.
► CS 615 CS Colloquium (1)
Students will broaden their knowledge regarding research areas and current trends of Computer Science and IT industry through guest lectures, research, and peer presentations. Maybe repeated for credit up to 8 credits.
► CS 620 Database and Information Systems (4)
Covers database theory and applications of databases. Focus on data modeling and data design.
► CS 630 Software Engineering (4)
Tools used to measure and track stages of the project life cycle are examined.
► CS 650 Networks and Communications (4)
Current and future role of the networked work place will be explored. Communication protocols will be explained.
► CS 660 Algorithms & Computational Theory (4)
Examines the foundational tools of computer science.
► CS 670 Computer Architecture and Operating Systems (4)
A survey course covering various aspects of operating systems and computer architecture.
► CS 680 Knowledge Based Systems and Decision Support Systems (4)
Theoretical and practical aspects of decision support systems and knowledge based systems. An intro to artificial intelligence is given.
► CS 690 Computer Security Administration (4)
Introduces the basics of computer security and investigates ways to prevent hackers from accessing websites. Will analyze formal criteria and properties of hardware, software, and database security systems.