Curriculum 29032023114450
Curriculum 29032023114450
Curriculum 29032023114450
CURRICULUM
Coursework Option
Coursework Option (also called No Thesis/No Report)
The list of courses required to obtain a degree is called the program of work. A total of
30 hours of coursework within 3 areas is needed to complete the program of work for
the Master’s coursework option. The Graduate Advisor approves the program of work
prior to graduation. This checklist is available for planning and evaluating your program
of work. Please see Course Information for current and future semester CS teaching
plans.
The information below is organized into five sections. Section 1 discusses background
requirements. Section 2 discusses major coursework requirements. Section 3 discusses
minor coursework requirements. Section 4 discusses additional requirements. Section 5
discusses transfer work.
24 hours of major coursework – Please pay attention to the Credit/No Credit (CR/NC)
rules written in #2 below. 9 hrs. of diversity courses, 15 hrs. of CS Graduate courses
1. 9 hours of diversity courses - 1 course from each of the 3 areas - applications, systems, and
theory. Passed with a grade of B- or better.
2. 15 hours of any 5 CS graduate courses passed with a grade of C or better. One undergraduate
upper division course may be substituted for 1 graduate course; however, no 'elements' courses
may be used as a substitute. The undergraduate course may be taken either for a grade or
CR/NC. Please remember background courses have a grade requirement so are not usually
taken CR/NC. A "CS 395 Conference Course" may be included with (rare) permission from the
Graduate Advisor. (At most 3 hours of undergraduate coursework can count towards your
program of work.)
Thesis Option
The list of courses required to obtain a degree is called the program of work. A total of
30 hours of coursework within 3 areas is needed to complete the program of work for
the Master’s Thesis option. The Graduate Advisor approves the program of work prior to
graduation. This checklist is available for planning and evaluating your program of work.
Please see Course Information for current and future semester CS teaching plans.
The information below is organized into five sections. Section 1 discusses background
requirements. Section 2 discusses major coursework requirements. Section 3 discusses
minor coursework requirements. Section 4 discusses additional requirements. Section 5
discusses transfer work.
semester. Computer Science 104 and 109 (Topic: Competitive Programming) may not both be counted. Prerequisite: Computer
Science 311 or 311H with a grade of at least C-, and registration or credit in Computer Science 314 or 314H with a grade of at
least C-.
C S 105C. Computer Programming: C++.
Explores the syntax and concepts needed to program in C++. One lecture hour a week for one semester. Prerequisite: Computer
Science 313E, 314, 314H, or Electrical Engineering 422C, with a grade of at least C-.
C S 105P. Topics In Computer Programming Languages.
An introduction to programming in a particular computer language. Includes designing and implementing programs. One lecture
hour a week for one semester. May be repeated for credit when the topics vary. Prerequisite: Computer Science 313E, 314, 314H,
or Electrical Engineering 422C, with a grade of at least C-, and consent of instructor.
C S 108. Software Systems.
Introduction to the use of a particular software system. Students build applications that exploit the system being studied. One
lecture hour a week for one semester. May be repeated for credit when the topics vary. Offered on the pass/fail basis only.
Prerequisite: Computer Science 313E, 314, 314H, or Electrical Engineering 422C, with a grade of at least C-.
C S 109, 209, 309. Topics in Computer Science.
For each semester hour of credit earned, one lecture hour a week for one semester. May be repeated for credit when the topics
vary. Prerequisite: Varies with the topic.
Topic 1: Quantum Computing I. Introduction to quantum information and communication. Computer Science 309 (Topic:
Quantum Computing-FRI) and 309 (Topic 1) may not both be counted.
C S 311. Discrete Mathematics for Computer Science.
Restricted to computer science majors. A focus on discrete mathematical tools of fundamental importance to the working
computer scientist. An emphasis is placed on using logical notation to express rigorous mathematical arguments. Subjects include
proof by induction, introduction to graph theory, recurrences, sets, functions, and an introduction to program correctness. Three
lecture hours a week for one semester. Computer Science 311 and 311H may not both be counted. Prerequisite: The following
coursework with a grade of at least C- in each: Computer Science 312 or 312H; and Mathematics 408C, 408K, or 408N, or
registration for Mathematics 408C.
C S 311H. Discrete Mathematics for Computer Science: Honors.
Restricted to honors computer science majors. A focus on discrete mathematical tools of fundamental importance to the working
computer scientist. An emphasis is placed on using logical notation to express rigorous mathematical arguments. Subjects include
proof by induction, graph theory, number theory, combinatorics, recurrences, sets, functions, an introduction to program
correctness, and discrete probability. Three lecture hours a week for one semester. Computer Science 311 and 311H may not both
be counted. Prerequisite: Mathematics 408K or 408N with a grade of at least C-; or registration or credit with at least C-
in Mathematics 408C.
C S 312. Introduction to Programming.
First part of a two-part sequence in programming. Fundamental concepts of structured programming; procedures and data
structures with a focus on problem solving strategies and implementation; introduction to concepts of informal specification,
informal reasoning about program behavior, debugging, and ad hoc testing. Three lecture hours and one discussion hour a week
for one semester. Only one of the following courses may be counted: Computer Science 303E, 312, 312H. Credit for Computer
Science 312 may not be earned after a student has received credit for Computer Science 314 or 314H. Prerequisite: Credit with a
grade of at least C- or registration for Mathematics 408C, 408K, or 408N.
C S 312H. Introduction to Programming: Honors.
Restricted to computer science majors. First part of a two-part sequence in programming. Fundamental concepts of structured
programming; procedures and data structures with a focus on problem solving strategies and implementation; introduction to
concepts of informal specification, informal reasoning about program behavior, debugging, and ad hoc testing. Three lecture
hours and one discussion hour a week for one semester. Only one of the following courses may be counted: Computer Science
303E, 312, 312H. Credit for Computer Science 312H may not be earned after a student has received credit for Computer Science
314 or 314H. Prerequisite: Credit with a grade of at least C- or registration for Mathematics 305G, or a passing score on the
College of Natural Sciences mathematics placement examination; and consent of the honors director.
C S 313E. Elements of Software Design.
Object-oriented design of software using Python, a modern high-level language. Introduction to abstract data types, fundamental
algorithms, and basics of complexity analysis. Three lecture hours a week for one semester. May not be counted toward a degree
in computer science. Prerequisite: Computer Science 303E, 312, or 312H with a grade of at least C-.
C S 314. Data Structures.
Second part of a two-part sequence in programming. Introduction to specifications, simple unit testing, and debugging; building
and using canonical data structures; algorithm analysis and reasoning techniques such as assertions and invariants. Three lecture
hours and one discussion hour a week for one semester. Computer Science 314 and 314H may not both be counted.
Prerequisite: Computer Science 312 or 312H with a grade of at least C-.
C S 314H. Data Structures: Honors.
Second part of a two-part sequence in programming. Introduction to specifications, simple unit testing, and debugging; building
and using canonical data structures; algorithm analysis and reasoning techniques such as assertions and invariants. Three lecture
hours and one discussion hour a week for one semester. Computer Science 314 and 314H may not both be counted. Prerequisite:
Consent of honors faculty advisor.
C S 119S, 219S, 319S, 419S, 519S, 619S, 719S, 819S, 919S. Topics in Computer Science.
This course is used to record credit the student earns while enrolled at another institution in a program administered by the
University's Study Abroad Office. Credit is recorded as assigned by the study abroad adviser in the Department of Computer
Science. University credit is awarded for work in an exchange program; it may be counted as coursework taken in residence.
Transfer credit is awarded for work in an affiliated studies program. May be repeated for credit when the topics vary.
Upper-Division Courses
C S 120N, 220N, 320N. Topics in Computer Science for Nonmajors.
For each semester hour of credit earned, one lecture hour a week for one semester. May not be counted toward a degree in
computer science. May be repeated for credit when the topics vary. Prerequisite: Varies with the topic.
Robotics) may not both be counted. Prerequisite: The following coursework with a grade of at least C- in each: Computer
Science 429 or 429H; and Mathematics 362K or Statistics and Data Sciences 321.
C S 345. Programming Languages.
Survey of significant concepts underlying modern programming languages, including syntax, functions, expressions, types,
polymorphism, assignment, procedures, pointers, encapsulation, classes, and inheritance, with some discussion of
implementation issues. Prominent programming paradigms, such as sequential, concurrent, object-oriented, functional, and logic
programming. Illustrative examples drawn from a variety of current languages. Three lecture hours a week for one
semester. Computer Science 345 and 345H may not both be counted. Prerequisite: Computer Science 429 or 429H with a grade
of at least C-.
C S 345H. Programming Languages: Honors.
A survey of significant concepts underlying modern programming languages, including syntax, functions, expressions, types,
polymorphism, assignment, procedures, pointers, encapsulation, classes, and inheritance, with some discussion of
implementation issues. Prominent programming paradigms, such as sequential, concurrent, object-oriented, functional, and logic
programming. Illustrative examples drawn from a variety of current languages. Three lecture hours a week for one
semester. Computer Science 345 and 345H may not both be counted. Prerequisite: Computer Science 429 or 429H with a grade
of at least C-.
C S 346. Cryptography.
A theoretical introduction to cryptography. Subjects include private key cryptosystems, public key cryptosystems, digital
signatures, secret sharing schemes, and the necessary mathematical background. Three lecture hours a week for one semester.
Prerequisite: The following coursework with a grade of at least C-: Computer Science 429 or 429H; 331, 331H, 341, or 341H;
and credit with a grade of at least C- or registration for: Mathematics 340L, 341, or Statistics and Data Sciences 329C.
C S 347. Data Management.
Concepts of database design and database system implementation. Data models, query processing, database design theory, crash
recovery, concurrent control, and distributed databases. Three lecture hours a week for one semester. Prerequisite: Computer
Science 429 or 429H with a grade of at least C-.
C S 349. Contemporary Issues in Computer Science.
An examination of social, professional, and ethical issues involved in the use of computer technology. Subjects may include
software engineering ethics, computer safety and reliability, constitutional issues, intellectual property, computer crime, societal
impact, emerging technologies, and philosophical issues. Three lecture hours a week for one semester. Computer Science
349 and 378 (Topic: Contemporary Issues in Computer Science) may not both be counted. Prerequisite: Computer Science
429 or 429H with a grade of at least C-.
C S 350C. Advanced Computer Architecture.
Relationships between programming and hardware design, high performance and low power microarchitectures, memory system
design, technology and workload constraints on design, special techniques for coding, addressing, and control, and evaluation of
design alternatives will be explored. Three lecture hours a week for one semester. Prerequisite: Computer Science
429 or 429H with a grade of at least C-.
C S 350F. Operating Systems.
Advanced coverage of core operating systems (virtual memory, file systems, scheduling), and intermediate and advanced
operating systems concepts: multiprocessing, multi-core computing, linking, kernel design, virtual machines, and security. Three
lecture hours a week for one semester. Prerequisite: Computer Science 439 or 439H with a grade of at least C-.
C S 353. Theory of Computation.
An introduction to computability theory and computational complexity, focusing on the limits of computation. Subjects include
undecidability, NP-completeness, time and space complexity, circuit complexity, and randomized complexity. Three lecture
hours a week for one semester. Prerequisite: One of the following with a grade of at least C-: Computer Science 331, 331H, 341,
or 341H.
and development. Three lecture hours a week for one semester. Only one of the following may be counted: Computer Science
367, Mathematics 368K, Physics 329. Prerequisite: The following coursework with a grade of at least C-: Computer Science
429 or 429H; Mathematics 408D, 408M, or 427L; and Mathematics 340L, 341, or Statistics and Data Sciences 329C.
C S 369. Systems Modeling.
Introduction to performance modeling, with emphasis on computer systems. Modeling methodology, queueing network models,
simulation, analysis of results. Three lecture hours a week for one semester. Prerequisite: The following coursework with a grade
of at least C-: Computer Science 429 or 429H; and Mathematics 362K or Statistics and Data Sciences 321.
C S 370. Undergraduate Reading and Research.
Supervised study of selected problems in computer science, by individual arrangement with supervising instructor. The
equivalent of three lecture hours a week for one semester. Computer Science 370 and 370F may not both be counted. No more
than three semester hours may be counted toward a degree in computer science. Prerequisite: Computer Science
429 or 429H with a grade of at least C-, and consent of the undergraduate adviser.
C S 370F. Undergraduate Reading and Research: Writing.
Supervised study of selected problems in computer science, by individual arrangement with supervising instructor. The
equivalent of three lecture hours a week for one semester. Computer Science 370 and 370F may not both be counted. No more
than three semester hours may be counted toward a degree in computer science. Prerequisite: Computer Science
429 or 429H with a grade of at least C-, and consent of the undergraduate adviser.
C S 371D. Distributed Computing.
Investigation of models, principles, and fundamental protocols, including event ordering and global predicate detection, atomic
commit, state-machine replication, rollback recovery, primary backup, consensus for synchronous and asynchronous systems,
and byzantine fault-tolerance. Three lecture hours a week for one semester. Prerequisite: Computer Science 439 or 439H with a
grade of at least C-.
C S 371G. Generic Programming and the STL.
Three lecture hours a week for one semester. Computer Science 371G and 378 (Topic: Generic Programming and the STL) may
not both be counted. Prerequisite: Computer Science 429 or 429H with a grade of at least C-.
C S 371L. iOS Mobile Computing.
Overview of mobile computing with an emphasis on developing applications for the iOS operating system. Three lecture hours a
week for one semester. Computer Science 371L and 378 (Topic: iOS Mobile Computing) may not both be counted. Prerequisite:
Credit with a grade of at least C- or registration in Computer Science 439 or 439H.
C S 371M. Mobile Computing.
Overview of mobile computing. Emphasis on mobile application development. Use of mobile capabilities: sensors, location,
telephony, and multimedia. Three lecture hours a week for one semester Computer Science 371M and 378 (Topic: Mobile
Computing) may not both be counted. Prerequisite: Computer Science 429 or 429H with a grade of at least C-; and credit with a
grade of at least C- or registration for Computer Science 439 or 439H.
C S 371P. Object-Oriented Programming.
Programming using class derivation, inheritance, and dynamic polymorphism. Application of a simple object-oriented design
methodology to several software development problems. Three lecture hours a week for one semester. Prerequisite: Computer
Science 429 or 429H with a grade of at least C-.
C S 371R. Information Retrieval and Web Search.
Introduction to traditional and recent methodologies for indexing, processing, querying, and classifying unstructured and semi-
structured textual data, including hypertext and World Wide Web documents. Three lecture hours a week for one semester.
Computer Sciences 371R and 378 (Topic: Intelligent Information Retrieval and Web Search) may not both be counted.
Prerequisite: Computer Science 429 or 429H with a grade of at least C-.
C S 371S. Object-Oriented Software Engineering.
Object-oriented formulations of software systems as executable specifications, object-oriented analysis, design of software
architectures, translation of high-level specification systems. Three lecture hours a week for one semester. Prerequisite: Computer
Science 429 or 429H with a grade of at least C-.
Programming) may not both be counted. Prerequisite: Graduate standing and knowledge of programming, object-oriented
terminology, and Java.
C S 386S. Network Protocol Security.
Techniques and research in Internet and network security. Three lecture hours a week for one semester. Computer Science
386S and 395T (Topic: Secure Network Protocols) may not both be counted. Prerequisite: Graduate standing.
C S 386W. Wireless Networking.
Fundamental concepts and principles of wireless network technologies and protocol design, ranging from physical layer to
application layer, and in-depth studies of current wireless research. Three lecture hours a week for one semester. Computer
Science 386W and 395T (Topic: Wireless Networking) may not both be counted. Prerequisite: Graduate standing.
C S 388. Natural Language Processing.
Computational methods for syntactic and semantic analysis of structures representing meanings of natural language; study of
current natural language processing systems; methods for computing outlines and discourse structures of descriptive text. Three
lecture hours a week for one semester. Prerequisite: Graduate standing, and a course in artificial intelligence or consent of
instructor.
one semester. Computer Science 392F and 395T (Topic: Feature-Oriented Programming) may not both be counted. Prerequisite:
Graduate standing, and a basic knowledge of Java, compilers and grammars, and object-oriented design methods.
C S 393C. Agent-Based Electronic Commerce.
Focuses on the intersection of computer science (including multiagent systems and machine learning), economics, and game
theory. Explores economic mechanisms of exchange suitable for use by automated intelligent agents, including auctions and
auction theory, game theory and mechanism design, and autonomous bidding agents. Students demonstrate programming
proficiency in a trading agent competition. Three lecture hours a week for one semester. Computer Science
393C and 395T (Topic: Agent-Based Electronic Commerce) may not both be counted. Prerequisite: Graduate standing.
C S 393D. Topics in Numerical Analysis.
Recent topics have included numerical methods in ordinary differential equations, numerical methods in partial differential
equations, computational problems in linear algebra, numerical solution of systems of equations, numerical methods in functional
approximation, numerical integration. Three lecture hours a week for one semester. May be repeated for credit when the topics
vary. Prerequisite: Graduate standing and consent of instructor.
C S 698. Thesis.
The equivalent of three lecture hours a week for two semesters. Offered on the credit/no credit basis only. Prerequisite: For 698A,
graduate standing in computer science and consent of the graduate adviser; for 698B, Computer Science 698A.
C S 398T. Supervised Teaching in Computer Science.
Supervised teaching experience, and seminar focused on curriculum construction and teaching methods. Three lecture hours a
week for one semester. Offered on the credit/no credit basis only. Prerequisite: Graduate standing and appointment as a teaching
assistant.