Computer Science

Course Descriptions

Print
Classroom Instruction
Classroom Instruction

CS 1003
Computer Proficiency. For students with minimal personal computer skills. Use of Internet and productivity software such as word processing, spreadsheets, databases, and presentation software. The ability to log on to a personal computer, access the OSU network, and access OSU Web sites is assumed.

CS 1013
Computer Science Principles. 3 credits. Computing as a creative human activity, abstraction to reduce detail and focus on concepts relevant to understanding and solving problems, describing data and information to facilitate the creation of knowledge, discuss algorithms as tools for developing and expressing solutions to computational problems, use programming is a creative process that produces computational artifacts; and discuss digital devices, systems, and the networks that interconnect them.

CS 1103
(A) Computer Programming. Lab 2. Prerequisite(s): MATH 1513 or equivalent. Introduction to computer programming using a high-level computer language, including subprograms and arrays. Principles of problem solving, debugging, documentation, and good programming practice. Elementary methods of searching and sorting. Not intended for computer science majors.

CS 1113
(A) Computer Science I. Lab 2. Prerequisite(s): MATH 1513 or equivalent. Introduction to computer science using a block-structured high-level computer language, including subprograms, arrays, recursion, records, and abstract data types. Principles of problem solving, debugging, documentation, and good programming practice. Elementary methods of sorting and searching. Use of operating system commands and utilities.

CS 2133
Computer Science II. Prerequisite(s): 1113. Recursive algorithms. Intermediate methods of searching and sorting. Mathematical analysis of space and time complexity, worst case, and average case performance.

CS 2301
FORTRAN Programming. Prerequisite(s): Another programming language. FORTRAN control structures, arrays, subroutines, functions, input/output.

CS 2331
SAS Programming. Prerequisite(s): A different programming language or consent of instructor. SAS as a general purpose programming language. Data representation, input/output, use of built-in procedures, report generation. (Same course as STAT 2331)

CS 2351
UNIX Programming. Lab 2. Prerequisite(s): CS 1113 or EET 2303. The UNIX programming system. The programming environment. The UNIX file system and the shell. Use of pipes and filters.

CS 2433
C/C++ Programming. Prerequisite(s): 1113. C/C++ programming language types, operators, expressions, control flow, functions, structures, pointers, arrays, UNIX interface. Basic object oriented programming using C++ and the related language syntax and functionality.

CS 2570
Special Problems in Computer Science. 1-3 credits, max 6. Prerequisite(s): Consent of instructor and freshman or sophomore standing. Current topics and applications of computer science. Existing and new topics to computer science. Allows lower-division students to study topics not provided in existing classes. Can be individual study or a class with a new subject.

CS 3030
Industrial Practice in Computer Science. 1-6 credits, max 9. Prerequisite(s): 3443, MATH 2144, junior standing, consent of departmental adviser. Applied computing in industry. Topics vary with cooperating employers. Written reports will be specified by adviser.

CS 3363
Organization of Programming Languages. Prerequisite(s): 2133, 3443. Programming language constructs. Run time behavior of programs. Language definition structure. Control structures and data flow programming paradigms.

CS 3373
Advanced Object-Oriented Programming for Windowing Environments. Prerequisite(s): For CS students, 2133, 2433. For TCOM students, CS 4343 and a working knowledge of C++. Applying the object-oriented computing model to the design and development of software for windowing environments. Effective use of Graphical User Interfaces (GUIs), the Internet, data interchange principles, and related topics. No credit for students with credit in 5373. (Same course as 5373*)

CS 3443
Computer Systems. Prerequisite(s): 2133. Functional and register level description of computer systems, computer structures, addressing techniques, macros, linkage, input-output operations. Introduction to file processing operations and auxiliary storage devices. Programming assignments are implemented in assembly language.

CS 3513
Numerical Methods for Digital Computers. Prerequisite(s): MATH 2153; MATH 3013 or concurrent enrollment; or MATH 3263 and knowledge of programming. Errors, floating point numbers and operations, interpolation and approximation, solution of nonlinear equations and linear systems, condition and stability, acceleration methods, numerical differentiation and integration.

CS 3570
Special Problems in Computer Science. 1-6 credits, max 6. Prerequisite(s): Junior standing and consent of instructor. Current topics and applications of computer science. Existing and new topics to computer science. Allows lower-division students to study topics not provided in existing classes. Can be individual study or a class with a new subject.

CS 3613
Theoretical Foundations of Computing. Prerequisite(s): 2133, 3653. Introduction to the classical theory of computer science. Sequential machines and their applications to devices, processes, and programming. Models of computation: finite-state automata, push-down automata, Turing machines. The role of non-determinism. Limits of digital computation. Computability and unsolvability. The Church-Turing Thesis.

CS 3653
Discrete Mathematics for Computer Science. Prerequisite(s): MATH 2144. Theory and applications of discrete mathematical models fundamental to analysis of problems in computer science. Set theory, formal logic and proof techniques, relations and functions, combinatorics and probability, undirected and directed graphs, Boolean algebra, switching logic.

CS 4113*
Techniques of Computer Science for Science and Engineering. Prerequisite(s): One year calculus and senior or graduate standing. For advanced undergraduate students requiring a one-semester treatment of computer topics. No background in computing topics assumed. Comprehensive treatment of the FORTRAN programming language with emphasis on numerical applications, number systems, finite arithmetic, iterative processes, program structuring, numerical methods, and program libraries. No credit as a major elective for computer science majors.

CS 4143*
Computer Graphics. Prerequisite(s): MATH 2163 and prior programming experience. Interactive graphics programming; graphics hardware; geometrical transformation; data structures for graphic representations; viewing in three dimensions; representation of 3D shapes; hidden edge and hidden surface removal algorithms; shading models.

CS 4153*
Mobile Applications Development. Prerequisite(s): CS 2133 or 2433. The history of mobile apps and their implication on computing in general. Survey of the various platforms and approaches used for mobile apps. Examine the differences between "conventional" programs and mobile apps. Learn tools and techniques to develop mobile apps and demonstrate proficiency through development assignments.

CS 4154 (was 5154) *
Computer Science Migration. Lab 2. Prerequisite(s): MATH 2144, knowledge of a programming language and senior standing. A survey of computer science for students whose major is not computer science. Programming in high level languages. Algorithm design and analysis. Fundamental data structures.

CS 4173*
Video Game Development. Prerequisite(s): 2133 and 2433 and MATH 2144. History of video games. A survey of various game platforms. Computer graphics, audio tools and techniques, and artificial intelligence for game development. Game engines. Game development tools and techniques. An overview of the video game industry from a development perspective.

CS 4183*
Video Game Design. Prerequisite(s): 2133 and 3653. Theory and pragmatics of game design including game mechanics, storytelling, and types of game play. The relationship between human/computer interaction and the user experience. A survey of game genres. An overview of the video game industry from a design perspective.

CS 4243
Algorithms and Processes in Computer Security. Prerequisite(s): 3443. Overview of the components of computer and network security. Discussion of external processes required in secure systems, information assurance, backup, business resumption. Detailed analysis of security encryption, protocols, hashing, certification, and authentication. No credit for students with credit in CS 5243.

CS 4273*
Software Engineering. Prerequisite(s): 2133, 3443 or ECEN 3213, 3653. Fundamental characteristics of the software life cycle. Tools, techniques, and management controls for development and maintenance of large software systems. Software metrics and models. Human factors and experimental design. (Same course as ECEN 4273)

CS 4283*
Computer Networks. Prerequisite(s): 2133, 3443 or ECEN 3213; UNIX knowledge. Computer networks, distributed systems and their systematic design. Introduction to the use, structure, and architecture of computer networks. Networking experiments to describe network topology. ISO reference model. (Same course as ECEN 4283)

CS 4323*
Design and Implementation of Operating Systems I. Prerequisite(s): 2133 and 3443 or ECEN 3213 or ENSC 3213 and 3653 and 4343. Process activation and process context block. Batch, multi-programmed, and timeshared operating system. Process management, memory management, and synchronization primitives. Deadlock prevention, avoidance, and detection.

CS 4343*
Data Structures and Algorithm Analysis I. Prerequisite(s): 2133, 3653. Storage, structures, data and information structures, list processing, trees and tree processing, graphs and graph processing, searching, and sorting.

CS 4433
Introduction to Database Systems. Prerequisite(s): 2133. An overview of database management systems, entity-relationship model, relational model, structural query language, relational algebra, relational database design with normalization theorems, XML; basic file organization and storage management; elementary e-commerce web application development; database systems and the Internet.

CS 4443*
Compiler Writing I. Prerequisite(s): 2133, 3443. Syntax and semantics of procedure-oriented languages and theory of translation techniques used in their compilation. Study of languages for particular application areas, including nonalgebraic languages.

CS 4513*
Numerical Mathematics: Analysis. Prerequisite(s): MATH 2233, 3013, knowledge of programming or consent of instructor. Machine computing, algorithms, and analysis of errors applied to interpolation and approximation of functions solving equations and systems of equations; discrete variable methods for integrals and differential equations. (Same course as MATH 4513)

CS 4570*
Special Topics in Computing. 1-3 credits, max 5. Prerequisite(s): Senior standing and consent of instructor. Advanced topics and applications of computer science. Typical topics include operating systems, multiprocessor systems, programming systems or various mathematical and statistical packages. Designed to allow students to study topics not provided in existing courses.

CS 4793*
Artificial Intelligence 1. Prerequisite(s): 2133, 3653. Broad coverage of core artificial intelligence (AI) topics, including search-oriented problem solving, knowledge representation, logical inference, AI languages, history and philosophy of AI.

CS 4883
Social Issues in Computing. Prerequisite(s): Senior standing and ENGL 3323 or BCOM 3113 or BCOM 3223. The history and evolution of computing systems, providing the background for the analysis of the social impact of computers. The social implications of computer use and or misuse with emphasis on the effects on the individual, society, and other human institutions. Social responsibilities of people involved in using or applying computers.

CS 4993
Senior Honors Project. Prerequisite(s): Departmental invitation, senior standing, Honors Program participation. A guided reading and research program ending with an honors project under the direction of a faculty member, with a second faculty reader and an oral examination. Required for graduation with departmental honors in computing and information science.

CS 5000*
Research and Thesis. 1-6 credits, max 6. Prerequisite(s): Consent of major professor. A student studying for a master’s degree who elects to write a thesis or a report must enroll in this course.

CS 5030*
Professional Practice. 1-9 credits, max 9. Prerequisite(s): Graduate standing in computer science, consent of the department head. Experience in the application of computer science principles to problems encountered in industry and government. Participation in problem solving in the role of junior computer scientist, junior software engineer, or computer science intern. All problem solutions documented. Required written report to the major professor.

CS 5033*
Parallel Algorithms and Programming. Prerequisite(s): 4343 or consent of instructor. Models of parallel computation, design and analysis of parallel algorithms: fundamental parallel algorithms for selected sorting, arithmetic, and matrix, and graph problems, and applications in science and engineering, message-passing programming, and shared-memory programming.

CS 5070*
Seminar and Special Problems. 1-6 credits, max 6. Prerequisite(s): Consent of instructor. Designed to allow students to study advanced topics not provided in existing courses.

CS 5113
Computer Organization and Architecture. Prerequisite(s): 3443. Computer architecture, computer control, microprogrammed control, addressing structures, memory hierarchies, hardware description languages, specific architectures, hardware simulation, and emulation.

CS 5123
Cloud Computing and Distributed Systems. Prerequisite(s): 3443 and 4343. Distributed system architectures, models, design principles, and performance evaluation metrics. Distributed programming paradigms and service-oriented architectures. Design and analysis of distributed algorithms. Grid computing, cloud computing, peer-to-peer computing, and data-intensive computing paradigms. Programming multicore and manycore systems.

CS 5173
Video Game Production. Prerequisite(s): 4173, 4183. The various aspects of video game production and the video game industry will be covered, including technical production and testing, roles and responsibilities of team members, project management, and legal concerns related to video game production. Professionals from the video game industry will be invited to make presentations.

CS 5243
Algorithms and Processes in Computer Security. Prerequisite(s): 3443. Overview of the components of computer and network security. Discussion of external processes required in secure systems, information assurance, backup, business resumption. Detailed analysis of security encryption, protocols, hashing, certification, and authentication. No credit for students with credit in 4243.

CS 5253
Digital Computer Design. Prerequisite(s): ECEN 3223. Analysis and design of digital computers. Arithmetic algorithms and the design of the arithmetic/logic unit (ALU). Serial and parallel data processing; control and timing systems; microprogramming; memory organization alternatives; input/output interfaces. (Same course as ECEN 5253)

CS 5263*
Quantum Computing. Prerequisite(s): Graduate standing. The main theory of quantum information science and its applications to communications, computing and cryptography. Topics include introduction to quantum mechanics, quantum gates, circuits, entropy, cryptographic schemes, and implementations. Current technology in support of quantum processing will be reviewed.

CS 5273*
Advanced Software Engineering. Prerequisite(s): 4273. Continuation of 4273. Formal methods for software design and development. Static analysis. Emerging design and development approaches. Model checking and model-based software reuse. Component-based software engineering and software repositories. (Same course as ECEN 5273)

CS 5283*
Computer Network Programming. Prerequisite(s): 4283. Detailed technical concepts related to Internet and multimedia, high speed LANS, high speed transport protocols, MPLS, multicasting, Int. serv/Diff serv, Router Buffer management, self-similar traffic, and socket programming.

CS 5313*
Formal Language Theory. Prerequisite(s): 3613. Formal language theory applied to procedure oriented languages. Application of finite state algorithms to lexical analysis. Chomsky hierarchy of languages. Generation, recognition, and closure properties of languages.

CS 5323*
Design and Implementation of Operating Systems II. Prerequisite(s): 4323. Task systems and concurrent programming, synchronization, and inter process communication. Theoretical investigation of resource sharing and deadlock, memory management, strategies,and scheduling algorithms, queuing theory, distributed operating systems. System accounting, user services and utilities.

CS 5333*
Compiler Writing II. Prerequisite(s): 4443. Continuation of 4443. Theory and practice of compiler writing techniques. Compiler writing systems. A formal approach to computer languages.

CS 5363*
Advanced Organization of Programming Languages. Prerequisite(s): 3363. Continuation of 3363, mathematical theory of computer language organization functional programming. Parallelism in languages. Mathematics of control structures and data structures. Applicative languages. Symbolic languages.

CS 5373*
Advanced Object-Oriented Programming for Windowing Environments. Prerequisite(s): For CS students, 2133, 2433. For TCOM students, CS 4343 and a working knowledge of C++. Applying the object-oriented computing model to the design and development of software for windowing environments. Effective use of Graphical User Interfaces (GUIs), the Internet, data interchange principles and related topics. No credit for students with credit in 3373. (Same course as 3373)

CS 5413*
Data Structures and Algorithm Analysis II. Prerequisite(s): 4154 or 4343. Data structures and their application in recursive and iterative algorithms. Static and dynamic data structure representations and processing algorithms. Dynamic and virtual storage management.

CS 5423*
Principles of Database Systems. Prerequisite(s): 3423, 4343 or equivalents. An overview of database management systems, entity-relationship model, relational model, structural query language, relational algebra, relational database design with normalization theorems, database integrity constraints, and principles of database systems with the Internet.

CS 5433*
Big Data Management. Prerequisite(s): 5423, 4283 or 5283. Distributed DBMS design and architecture, distributed query processing, transaction management, distributed concurrency control, data storage and processing for big data, Map-Reduce model for big data processing within the Hadoop software framework, big data warehouse for summarization, query and analysis using Hive, NoSQL databases querying.

CS 5513*
Numerical Computation. Prerequisite(s): MATH 2233 and MATH 3013 or MATH 3263 or equivalent courses; CS 3513 or MATH 4513 or an equivalent course; a knowledge of computer programming. Errors in machine computation; condition of problems and stability of algorithms; interpolation and approximation; nonlinear equations; linear and nonlinear systems; differentiation and integration; applications to modeling, simulation, and/or optimization.

CS 5653
Automata and Finite State Machines. Prerequisite(s): 5313. Sequential machines and automata. Hierarchy of recognizers. Decision problems and closure properties. Finite and infinite state machines. Cellular and stochastic automata. Coverings of automata.

CS 5663*
Computability and Decidability. Prerequisite(s): 5313. Primitive and partial recursive functions. Equivalence of models of computation. The Halting problem and undecidability. Reducing one problem to another or representation change. Tractability and the P-NP problem. Complexity hierarchies.

CS 5793*
Artificial Intelligence II. Prerequisite(s): 4793. Advance knowledge representation and expert system building, including reasoning under uncertainty. Applications to planning, intelligent agents, natural language processing, robotics, and machine learning.

CS 5813*
Principles of Wireless Networks. Prerequisite(s): 4283 or ECEN 4283. Wireless network operation, planning, mobility management, cellular and mobile data networks based on CDMA, TDMA, GSM, IEEE 802-11 WLANS, Adhoc networks, Bluetooth, power management, wireless geolocation and indoor positioning techniques. (Same course as ECEN 5563)

CS 5823*
Network Algorithmics. Prerequisite(s): 4283 and 4323. Discusses principles of efficient network implementation-router architecture, end node architecture, data copying, timer maintenance, demultiplexing, forwarding table, lookups, switching, scheduling, IP traceback.

CS 6000*
Doctoral Dissertation. 2-15 credits, max 40. Prerequisite(s): Graduate standing and approval of advisory committee. Independent research under the direction of a member of the graduate faculty. For students working toward a PhD degree.

CS 6210*
Advanced Topics in Parallel and Distributed Systems. 2-6 credits, max 12. Prerequisite(s): 5113. The state-of-the-art of parallel and distributed systems. Design, implementation, and analysis of parallel and distributed system architectures, protocols, and algorithms. Resource management, scheduling, and coordination. Internet-scale systems, middleware and services, virtualization, and distributed operating systems. Parallel and distributed programming paradigms: message-passing, shared memory, data-intensive, high performance, high throughput.

CS 6240*
Advanced Topics in Computer Organization. 2-6 credits, max 12. Prerequisite(s): 5113 and 5253. Structure and organization of advanced computer systems, parallel and pipeline computers, methods of computation, alignment networks, conflict-free memories, and bounds on computation time.

CS 6253*
Advanced Topics in Computer Architecture. Prerequisite(s): 5253 or ECEN 5253. Innovations in the architecture and organization of computers, with an emphasis on parallelism. Topics may include pipelining, multiprocessors, data flow, and reduction machines. (Same course as ECEN 6253)

CS 6300*
Advanced Topics in Programming Languages. 2-6 credits, max 12. Prerequisite(s): 5313. Interpreter models of programming language semantics, Vienna definition language, lambda calculus, LISP definition; Knuth semantic systems and their formulation, translational and denotational semantics. May be repeated with change of topics.

CS 6350*
Advanced Topics in Operating Systems. 2-6 credits, max 12. Prerequisite(s): 5323. Design and analysis of operating systems. Concurrent processes, server scheduling, models of auxiliary storage, memory management, virtual systems, and performance algorithms. May be repeated with a change in topics.

CS 6400*
Advanced Topics in Information Systems. 2-6 credits, max 12. Prerequisite(s): 5413, 5423. Principles of distributed database systems. Overview of relational database management systems (DBMS) and computer networks, distributed DBMS architecture, distributed database design, distributed concurrency control, query processing and distributed DBMS reliability.

CS 6500*
Advanced Topics in Numerical Analysis. 2-6 credits, max 12. Prerequisite(s): MATH 5513 or 4513 or MATH 4513 and consent of instructor. Systems of nonlinear equations, nonlinear least squares problems, iterative methods for large systems of linear equations, finite element methods, solution of partial differential equations. May be repeated with change of topics.

CS 6600*
Advanced Topics in Analysis of Algorithms. 2-6 credits, max 12. Prerequisite(s): 5413. Analysis of various algorithms. Sorting, searching, computational complexity, lower bounds for algorithms; NP-hard and NP-complete problems; parallel algorithms; proof of correctness of algorithms. May be repeated with change of topics.

CS 6620*
Advanced Topics in Applied Algorithms. 3 credits, max 12. Prerequisite(s): 4343 or consent of instructor. Recent advances in the design and analysis of data structures and algorithms for real-world applications in diverse problem domains. Problem domain designated for the course will differ in each offering and with instructor’s interests. Core topics include mathematical modeling of complex applied problems, and studies of relevant fundamental algorithmic techniques and their experimental analysis on real datasets.

CS 6623*
Algebraic Structures of Formal Grammars. Prerequisite(s): 5313, 5653. Context-free languages, Kleene languages, Dyck languages, context-sensitive languages; use of algebraic systems to define languages; linear bounded automata.

CS 6700*
Advanced Topics in Artificial Intelligence. 2-6 credits, max 12. Prerequisite(s): 5793 or consent of instructor. Machine learning; computer perception and robotics; logic programming; natural language understanding; intelligent agents; medical informatics. May be repeated with change of topics.

CS 6800*
Advanced Topics in Computing Networks. 2-12 credits, max 12. Prerequisite(s): 5283; Graduate standing in Computer Science; consent of instructor. Large scale embedded networks, deep-space networking, ubiquitous computing, optical networking, Next Generation Internet. May be repeated with change of topics.