Iowa State University – 2016-2017 1

CPR E 281 Digital Logic 4 COMPUTER SCIENCE COM S 309 Software Development Practices 3 COM S 311 Design and Analysis of Algorithms 3 http://www.cs.iastate.edu COM S 321 Introduction to Computer Architecture and 3 The undergraduate curriculum in computer science leading to the degree Machine-Level Programming Bachelor of Science is accredited by the Computing Accreditation COM S 327 Advanced Programming Techniques 3 Commission of ABET, http://www.abet.org , and equips students with COM S 331 Theory of Computing 3 a sound knowledge of the foundations of computer science, as well COM S 342 Principles of Programming Languages 3 as the problem solving and system design skills necessary to create robust, efficient, reliable, scalable, and flexible software systems. The COM S 352 Introduction to Operating Systems 3 B.S. degree in Computer Science prepares students for graduate study COM S 362 Object-Oriented Analysis and Design 3 in computer science, and for various business, industry, and government positions including computer scientists, information technologists, In addition to the above courses, at least 6 credits of 400-level courses and software developers. The main educational objectives of the are required, with a grade of C- or better. At least 3 credits must be from computer science program at Iowa State University are that its graduates courses in Group 1 (oral and written reports) and the remaining credits demonstrate expertise, engagement, and learning within three to five from courses in Group 1 or 2. Com S 402 may be applied towards the years after graduation. Group 1 requirement, provided 3 or more credits of 402 are taken. Com S 414 may not be applied towards fulfilling the 400-level electives. •Expertise: Graduated students should have the ability to establish peer- recognized expertise in the discipline. They should have the ability to Group 1 courses: Com S 402, 409, 417, 425, 430, 437, 461, 487, S E/CprE articulate this expertise by formulating and solving problems of interest, 416 by creating or deriving value through the application of technology, and Group 2 courses: Com S 412, 418, 426, 435, 440, 444, 454, 455, 472, 474, by using mathematical foundations, algorithmic principles, and computer 477, 486, Math 481, CprE 431, 458, 489 science theory in designing, implementing, and evaluating computer- based systems and processes which meet the desired needs of their Group 1 (courses in this group require oral and written reports): employers. COM S 402 Computer Science Senior Project 2-3 •Engagement: Graduated students should have the ability to be COM S 409 Software Requirements Engineering 3 engaged in the profession through the practice of computer science in industry, academia, or the public sector. They should demonstrate COM S 417 Software Testing 3 effective teaming and commitment to working with others by applying COM S 425 High Performance Computing for Scientific and 3 communications skills and professional knowledge. Engineering Applications COM S 430 Advanced Programming Tools 3 •Learning: Graduated students should have the ability to engage in COM S 437 Computer Game and Media Programming 3 sustained learning through graduate work, professional improvement opportunities, and self study so that they can adapt to the role played by COM S 461 Principles and Internals of Database Systems 3 information processing in ever-changing areas of science, technology, COM S 487 Network Programming, Applications, and Research 3 and society. Issues S E 416 Software Evolution and Maintenance 3 Curriculum in Computer Science Group 2: Students wishing to pursue the B.S. degree in computer science must first successfully complete the pre-major program consisting of Com S COM S 412 Formal Methods in Software Engineering 3 227, Com S 228, and Math 165; all with a grade of C- or above. COM S 418 Introduction to Computational Geometry 3 A student seeking a B.S. degree in computer science must satisfy the COM S 426 Introduction to Parallel Algorithms and 4 requirements of the University and College of Liberal Arts and Sciences Programming (see Liberal Arts and Sciences, Curriculum) and the departmental COM S 435 Algorithms for Large Data Sets: Theory and 3 requirements. Practice COM S 440 Principles and Practice of Compiling 3 The departmental requirements consist of a minimum of 44 credits in computer science and satisfaction of written and oral COM S 444 Bioinformatic Analysis 4 requirements. Students must earn at least a C- in Math 165, Math 166, COM S 454 Distributed Systems 3 Cpr E 281, and each Computer Science course taken to fulfill the Degree COM S 455 Simulation: Algorithms and Implementation 3 Program. COM S 472 Principles of 3

The following courses are required: COM S 474 Introduction to 3 COM S 477 Problem Solving Techniques for Applied Computer 3 COM S 101 Orientation R Science COM S 203 Careers in Computer Science R COM S 486 Fundamental Concepts in Computer Networking 3 COM S 227 Introduction to Object-oriented Programming 4 MATH 481 Numerical Methods for Differential Equations 3 COM S 228 Introduction to Data Structures 3 CPR E 431 Basics of Information System Security 3 COM S 230 Discrete Computational Structures 3 CPR E 458 Real Time Systems 3 2 Computer Science

CPR E 489 Computer Networking and Data Communications 4 GEOL 101 Environmental Geology: Earth in Crisis 3 GEOL 102 History of the Earth 3 Toward satisfying requirements of the College of Liberal Arts and GEOL 105 Gems and Gemstones 1 Sciences, the following courses should be included: GEOL 108 Introduction to Oceanography 3 PHIL 343 Philosophy of Technology 3 GEOL 111 Geological Disasters 1 SP CM 212 Fundamentals of Public Speaking 3 GEOL 201 Geology for Engineers and Environmental 3 14 credits of Math and Statistics 14 Scientists MATH 165 Calculus I 4 GEOL 451 Applied and Environmental Geophysics 3 MATH 166 Calculus II 4 MAT E 215 Introduction to Materials Science and Engineering 4 One Statistics course from: & 215L I and Introduction to Materials Science and STAT 305 Engineering Statistics 3 Engineering I - Lab STAT 330 Probability and Statistics for Computer Science 3 MTEOR 206 Introduction to Weather and Climate 3 STAT 341 Introduction to the Theory of Probability and 3 MTEOR 301 General Meteorology 4 Statistics I PSYCH 310 Brain and Behavior 3 At least one Math course from: PHYS 221 or HIGHER MATH 207 Matrices and Linear Algebra 3 MATH 265 Calculus III 4 Footnotes MATH 266 Elementary Differential Equations 3 * MATH 267 Elementary Differential Equations and Laplace 4 CHEM 163 - 231 Transforms ** GEOL 100 - 111 MATH 304 Combinatorics 3 The following courses meet the communication proficiency requirement: MATH 314 Graph Theory 3 MATH 317 Theory of Linear Algebra 4 ENGL 150 Critical Thinking and Communication 3 13 credits of Natural Science: 13 ENGL 250 Written, Oral, Visual, and Electronic Composition 3 This should include at least one of the following 2-course sequences One of the following and their labs: ENGL 302 Business Communication 3 BIOL 211 Principles of Biology I 4 ENGL 305 Creative Writing: Nonfiction 3 & 211L and Principles of Biology Laboratory I ENGL 309 Proposal and Report Writing 3 BIOL 212 Principles of Biology II 4 ENGL 314 Technical Communication 3 & 212L and Principles of Biology Laboratory II CHEM 177 General Chemistry I 5 The minimum grade accepted in each of the three required English & 177L and Laboratory in General Chemistry I courses is a C. CHEM 178 General Chemistry II 4 Students must take at least 15 credits of Computer Science courses at & 178L and Laboratory in College Chemistry II the 300 level or higher at Iowa State University while resident here. PHYS 221 Introduction to Classical Physics I 5 PHYS 222 Introduction to Classical Physics II 5 Students must earn a C- or better in each Computer Science course which is a prerequisite to a course listed in the student's degree program. In addition, courses from the following list can be taken to bring the natural science credits to a minimum of 13: Undergraduate Minor in Computer Science ANTHR 202 Introduction to Biological Anthropology and 3 Archaeology The Department of Computer Science offers an undergraduate minor in ANTHR 307 Biological Anthropology 3 Computer Science. The minor requires at least 16 credits in computer science courses. BBMB 221 Structure and Reactions in Biochemical Processes 3 BIOL 204 Biodiversity 2 COM S 227 Introduction to Object-oriented Programming 4 BIOL 312 Ecology 4 COM S 228 Introduction to Data Structures 3 BIOL 355 Plants and People 3 COM S 230 Discrete Computational Structures 3 * CHEM 163 College Chemistry 4 COM S 311 Design and Analysis of Algorithms 3 ENT 370 Insect Biology 3 3 credits in ComS courses at the 300 level or above 3 ENV S 324 Energy and the Environment 3 Undergraduate Curriculum in Software Engineering FS HN 167 Introduction to Human Nutrition 3 GEN 313 Principles of Genetics 3 The Department of Computer Science together with the Department GEN 313L Genetics Laboratory 1 of Electrical and Computer Engineering also offer a curriculum leading GEN 320 Genetics, Agriculture and Biotechnology 3 to an undergraduate degree in software engineering. The software ** engineering curriculum offers emphasis areas in software engineering GEOL 100 The Earth 3 GEOL 100L The Earth: Laboratory 1 Iowa State University – 2016-2017 3

principles, process, and practice. Students may also take elective courses methods, information assurance, machine learning and neural networks, in computer engineering and computer science. multimedia, operating systems, parallel and distributed computing, programming languages, robotics, and software engineering. There are See Index, Software Engineering. For curriculum information, see also also numerous opportunities for interdisciplinary research. College of Engineering and College of Liberal Arts and Sciences. Typically, students beginning graduate work in Computer Science have Computer Science, B.S. completed a bachelor’s degree or equivalent in Computer Science. Freshman However, some students with undergraduate majors in other areas, such Fall CreditsSpring Credits as Mathematical, physical, or biological science or engineering become successful graduate students in Computer Science. COM S 101 0 COM S 228 3 COM S 227 4 MATH 166 4 For the degree Master of Science, a minimum of 31 semester credits is MATH 165 4 Social Science 3 required. A thesis or a creative component demonstrating research and the ability to organize and express significant ideas in computer science ENGL 150 3 Arts and Humanities 3 is required. LIB 160 1 Foreign Language 102/ 3-4 Elective The purpose of the doctoral program is to train students to do original Foreign Language 101/ 3-4 research in Computer Science. Each student is also required to attain Elective knowledge and proficiency commensurate with a leadership role in the 15-16 16-17 field. The PhD requirements are governed by the student’s program of study committee within established guidelines of the department and Sophomore the graduate college. They include coursework (demonstrating breadth Fall CreditsSpring Credits and depth of knowledge), a research skills requirement, a preliminary COM S 203 0 COM S 311 3 examination, and a doctoral dissertation and final oral examination. COM S 230 3 CPR E 281 4 The department recommends that all graduate students majoring in COM S 327 3 Math elective 3-4 Computer Science teach as part of their training for an advanced degree. ENGL 250 3 Arts and Humanities 3 Courses primarily for undergraduates: Natural Science 3 Social science 3 Elective 3 COM S 101: Orientation Cr. R. F.S. 15 16-17 Introduction to the procedures and policies of Iowa State University Junior and the Department of Computer Science, test-outs, honorary societies, Fall CreditsSpring Credits etc. Issues relevant to student adjustment to college life will also be COM S 331 3 COM S 309 3 discussed. Offered on a satisfactory-fail basis only. COM S 362 3 COM S 321 3 COM S 103: Computer Applications STAT 300-level Elective 3 COM S 342 3 Cr. 4. F.S.SS. SP CM 212 3 ENGL 300-level Elective 3 Introduction to computer literacy and applications. Applications: Natural Science 5 Natural Science 5 Windows, Internet browser/HTML, word processing, spreadsheets, 17 17 database management and presentation software. Literacy: history of computing, structure of computers, telecommunications, computer Senior ethics, computer crime, and history of programming languages. No prior Fall CreditsSpring Credits computer experience necessary. Course is offered online only. Students COM S 352 3 COM S 400-level Elective 3 must attend an orientation session the first week of class. COM S 400-level Elective 3 Arts and Humanities 3 COM S 104: Introduction to Programming PHIL 343 3 300-level Elective 3 (1.5-1) Cr. 2. F.S. Social Science 3 Elective 3 Offered first 8 weeks and last 8 weeks. Use of personal computer and 12 12 workstation operating systems and beginning programming. Project- Total Credits: 120-123 oriented approach to computer operation and programming, including use of tools to aid in programming. Topics from computer history, Graduate Study using basic Windows and Unix tools, program structure, expression, variables, decision and logic, and iteration. No prior computer experience The department offers graduate programs leading to degrees of Master necessary. of Science (MS) and Doctor of Philosophy (PhD) with a major in Computer Science. The Doctor of Philosophy degree may also be earned with COM S 105: Short Course in Computer Programming computer science as a co-major with some other discipline. Additionally, Cr. 2. F.S. the department offers a minor for the students majoring in other Prereq: Com S 104 disciplines. 8-week course in programming, including instruction in syntax and semantics, of the following current programming languages. Established research areas include algorithms, artificial intelligence, computational complexity, computer architecture, bioinformatics, computational biology, computer networks, database systems, formal 4 Computer Science

COM S 105A: Short Course in Computer Programming: Perl COM S 207: Fundamentals of Computer Programming (1-2) Cr. 2. F.S. (Cross-listed with MIS). (3-1) Cr. 3. F.S. Prereq: Com S 104 Prereq: MATH 150 or placement into MATH 140/MATH 141/MATH 142 or 8-week course in programming using Perl. higher An introduction to computer programming using an object-oriented COM S 105B: Short Course in Computer Programming: MATLAB programming language. Emphasis on the basics of good programming (2-0) Cr. 2. F.S. techniques and style. Extensive practice in designing, implementing, Prereq: Com S 104 and debugging small programs. Use of abstract data types. Interactive 8-week course in programming using MATLAB. and file I/O. Exceptions/error-handling. This course is not designed for computer science, software engineering, and computer engineering COM S 106: Introduction to Web Programming majors. Credit may not be applied toward graduation for both Com S 207/ (3-0) Cr. 3. S. MIS 207 and Com S 227. Introduction to Web programming basics. Fundamentals of developing Web pages using a comprehensive Web development life cycle. In- COM S 208: Intermediate Computer Programming depth experience with current Web design techniques such as HTML5 (3-1) Cr. 3. S. and cascading style sheets. Programming strategies for accessibility, Prereq: MIS/COM S 207, credit or enrollment in MATH 151, MATH 160, or usability and search engine optimization. MATH 165 Intermediate-level programming techniques. Emphasis on designing, COM S 107: Applied Computer Programming writing, testing, debugging, and documenting medium-sized programs. (3-0) Cr. 3. F.S. Data structures and their uses. Dynamic memory usage. Inheritance and Introduction to computer programming for non-majors using a language polymorphism. Algorithm design and efficiency: recursion, searching, and such as the Visual Basic language. Basics of good programming and sorting. Event-driven and GUI programming. The software development algorithm development. Graphical user interfaces. process. This course is not designed for computer science, software COM S 108: Applied Computer Programming II engineering and computer engineering majors. Credit may not be applied (3-0) Cr. 3. F.S. toward the major in computer science, software engineering, or computer Prereq: Com S 107 or equivalent engineering. Advanced programming applications in Visual Basic for non-majors. COM S 227: Introduction to Object-oriented Programming Emphasis on programming projects including sorting, file processing, (3-2) Cr. 4. F.S. database processing, web programming, and graphics and animation. Prereq: Placement into MATH 143, 165, or higher; recommended: a previous Students will learn problem solving techniques and advanced high school or college course in programming or equivalent experience. programming skills to build real-world applications. Introduction to object-oriented design and programming techniques. COM S 113: Introduction to Spreadsheets and Databases Symbolic and numerical computation, recursion and iteration, modularity (2-2) Cr. 3. F.S.SS. procedural and data abstraction, and specifications and subtyping. Using Microsoft Excel spreadsheets and Microsoft Access databases to Object-oriented techniques including encapsulation, inheritance and input, store, process, manipulate, query, and analyze data for business polymorphism. Imperative programming. Emphasis on principles of and industrial applications. Credit in Com S 113 may not be applied programming and object-oriented design through extensive practice in toward graduation in the COM S, S E, and CPR E majors. Only one of COM design, writing, running, debugging, and reasoning. Course intended for S 103 and COM S 113 may count toward graduation. Com S majors. Credit may not be applied toward graduation for both Com S 207 and 227. COM S 201: Computer Programming in COBOL (3-0) Cr. 3. SS. COM S 228: Introduction to Data Structures Computer programming in COBOL. Emphasis on the design, writing, (3-1) Cr. 3. F.S. debugging, and testing of business applications programs in a Prereq: Minimum of C- in 227, credit or enrollment in MATH 165 transaction-oriented environment. An object-oriented approach to data structures and algorithms. Object- oriented analysis, design, and programming, with emphasis on data COM S 203: Careers in Computer Science abstraction, inheritance and subtype polymorphism. Abstract data type Cr. R. F.S. specification and correctness. Collections and associated algorithms, Computer science as a profession. Introduction to career fields open such as stacks, queues, lists, trees. Searching and sorting algorithms. to computer science majors. Relationship of coursework to careers. Graphs. Data on secondary storage. Analysis of algoritms. Emphasis on Presentations by computer science professionals. Offered on a object-oriented design, writing and documenting medium-sized programs. satisfactory-fail basis only. This course is designed for majors.

COM S 230: Discrete Computational Structures (3-1) Cr. 3. F.S. Prereq: Minimum of C- in COM S 227 and MATH 165; ENGL 150 Concepts in discrete mathematics as applied to computer science. Logic, proof techniques, set theory, relations, graphs, combinatorics, discrete probability and number theory. Iowa State University – 2016-2017 5

COM S 252: Linux Operating System Essentials COM S 327: Advanced Programming Techniques (3-0) Cr. 3. F. (3-0) Cr. 3. F.S. Prereq: COM S 107 or COM S 207 or COM S 227 Prereq: COM S 228, credit or enrollment in MATH 166. Introduction to installation, utilization, and administration of Linux Object-oriented programming experience using a language suitable for systems. Topics include open-source software, package installation and exploring advanced topics in programming. Topics include memory management, shell programming and command-line utilities, process management, parameter passing, inheritance, compiling, debugging, and and service management, account management, network configuration, maintaining programs. Significant programming projects. file sharing, interoperation with other computers and operating systems, automation, and system security. COM S 331: Theory of Computing (Cross-listed with LING). (3-1) Cr. 3. F.S. COM S 290: Independent Study Prereq: Minimum of C- in COM S 228, MATH 166, and in COM S 230 or CPR E Cr. arr. F.S. 310; ENGL 250 Prereq: Permission of instructor Models of computation: finite state automata, pushdown automata and Offered on a satisfactory-fail basis only. Turing machines. Study of grammars and their relation to automata. Limits of digital computation, unsolvability and Church-Turing thesis. COM S 290H: Independent Study: Honors Chomsky hierarchy and relations between classes of languages. Cr. arr. F.S. Prereq: Permission of instructor COM S 336: Introduction to Computer Graphics Offered on a satisfactory-fail basis only. (3-0) Cr. 3. F. Prereq: COM S 327, CoReq MATH 207 or MATH 317 COM S 309: Software Development Practices Basic algorithms, design, and programming of interactive computer (3-1) Cr. 3. F.S. graphics systems and hardware. Topics include 2D and 3D Prereq: Minimum of C- in COM S 228 transformations, 3D viewing, visible surface algorithms, collision A practical introduction to methods for managing software development. detection, illumination models, shading, ray tracing, shadows, Process models, requirements analysis, structured and object-oriented transparency and texture mapping. design, coding, testing, maintenance, cost and schedule estimation, metrics. Programming projects. COM S 342: Principles of Programming Languages (Cross-listed with S E). (3-1) Cr. 3. F.S. COM S 311: Design and Analysis of Algorithms Prereq: Minimum of C- in COM S 228, COM S 230 or CPR E 310 (3-1) Cr. 3. F.S. Study of concepts in programming languages and major programming Prereq: Minimum of C- in COM S 228; MATH 166, ENGL 150, and COM S 230 or paradigms, especially functional programming. Special emphasis CPR E 310 on design tradeoffs that enable students to make sound choices Basic techniques for design and analysis of efficient algorithms. Sorting, of programming languages for a given software development task. searching, graph algorithms, computational geometry, string processing Programming projects. and NP-completeness. Design techniques such as dynamic programming and the greedy method. Asymptotic, worst-case, average-case and COM S 350: Number Theory amortized analyses. Data structures including heaps, hash tables, binary (Cross-listed with MATH). (3-0) Cr. 3. S. search trees and red-black trees. Programming projects. Prereq: MATH 201 or COM S 230 Divisibility, integer representations, primes and divisors, linear COM S 319: Software Construction and User Interfaces diophantine equations, congruences, and multiplicative functions. (Cross-listed with S E). (3-0) Cr. 3. F. Applications to cryptography. Prereq: COM S 228 Basic theory of grammars, parsing. Language paradigms. State COM S 352: Introduction to Operating Systems transition and table-based software design. Review of principles of (3-1) Cr. 3. F.S. object orientation, object oriented analysis using UML. Frameworks and Prereq: COM S 321, and COM S 327; ENGL 250 APIs. User interface architecture, evaluation of user interface. Design of Survey of operating system issues. Introduction to hardware and windows, menus, and commands. Introduction to formal specification software components including: processors, peripherals, interrupts, and model-based software design. Introduction to domain-specific management of processes, threads and memory, deadlocks, file systems, software engineering. protection, virtual machines and system organization, and introduction to distributed operating systems. Programming projects. COM S 321: Introduction to Computer Architecture and Machine-Level Programming COM S 362: Object-Oriented Analysis and Design (3-1) Cr. 3. F.S. (3-0) Cr. 3. F.S. Prereq: Minimum of C- in COM S 228, CPR E 281 and ENGL 250 Prereq: Minimum of C- in COM S 228; ENGL 250 Introduction to computer architecture and organization. Emphasis on Object-oriented requirements analysis and systems design. Design evaluation of performance, instruction set architecture, datapath and notations such as the Unifed Modeling Language. Design Patterns. Group control, memory-hierarchy design, and pipelining. Assembly language on design and programming with large programming projects. a simulator. 6 Computer Science

COM S 363: Introduction to Database Management Systems COM S 410: Distributed Software Development (3-0) Cr. 3. F.S. (Dual-listed with COM S 510). (3-0) Cr. 3. F. Prereq: Minimum of C- in COM S 228; ENGL 250 Prereq: COMS 228, COMS 309, COMS 327 Relational, object-oriented, and semistructured data models and query Team with students at foreign universities to develop a software languages. SQL, ODMG, and XML standards. Database design using application. Importance of distributed development. Design for entity-relationship model, data dependencies and object definition distributed development, effective processes for distributed development, language. Application development in SQL-like languages and and cultural issues in distributed development, organizing for distributed general purpose host languages with application program interfaces. development, communication techniques and skills for distributed Information integration using data warehouses, mediators and wrappers. development,including oral presentations. Graduate credit requires in-- Programming Projects. depth study of concepts.

COM S 398: Cooperative Education COM S 412: Formal Methods in Software Engineering Cr. R. (Dual-listed with COM S 512). (Cross-listed with CPR E, S E). (3-0) Cr. 3. S. Prereq: Permission of department chair Prereq: COM S 230 or CPR E 310; COM S 311, STAT 330 Required of all cooperative students. Students must register for this A study of formal techniques for model-based specification and course prior to commencing each work period. verification of software systems. Topics include logics, formalisms, graph theory, numerical computations, algorithms and tools for automatic COM S 402: Computer Science Senior Project analysis of systems. Graduate credit requires in-depth study of concepts. Cr. 2-3. Repeatable. F.S. Students work as individuals and teams to complete the planning, design, COM S 414: Gerontechnology in Smart Home Environments and implementation of a significant project in the topic area. Oral and (Dual-listed with COM S 514). (3-0) Cr. 3. F. written reports. Prereq: Com S 227 or (Com S 207 or Geron 377 or ArtGr 271) or equivalent. An interdisciplinary course designed for students who are interested COM S 402A: Computer Science Senior Project: Multimedia and in assistive technology, pervasive computing, mobile computing and Computer Gaming I principles of universal and inclusive design for end users, in particular, Cr. 2-3. Repeatable. F.S. the elderly population. Students will work in semester-long projects as Prereq: COM S 437 interdisciplinary teams to apply knowledge obtained from lectures and Students conceive, plan, architect and design a computer game. Student mutual presentations. For graduate credit students are required to submit registered in this course will work with students in ARTIS 409. Oral and a research report and give an oral presentation. written reports. COM S 415: Software System Safety COM S 402B: Computer Science Senior Project: Multimedia and (Dual-listed with COM S 515). (3-0) Cr. 3. S. Computer Gaming II Prereq: COM S 309 or COM S 311, COM S 342 (0-4) Cr. 2. Repeatable. F.S. An introduction to the analysis, design, and testing of software for Prereq: COM S 402A safety-critical and high-integrity systems. Analysis techniques, formal Students implement, test, and present a completed production computer verification, fault identification and recovery, model checking, and game. Students in this class will work with students in ARTIS 409. Oral certification issues. Emphasizes a case-based and systematic approach and written reports. to software's role in safe systems.

COM S 402C: Computer Science Senior Project: Project in Computer COM S 417: Software Testing Science (Cross-listed with S E). (3-0) Cr. 3. S. (0-6) Cr. 3. Repeatable. F. Prereq: COM S 309; COM S 230 or CPR E 310; ENGL 250, SP CM 212 Students work as individuals and teams to complete the planning, design, Comprehensive study of software testing, principles, methodologies, and implementation of a significant project in the topic area. Oral and management strategies and techniques. Test models, test design written reports. techniques (black box and white box testing techniques), test adequacy criteria,integration, regression, system testing methods, and software COM S 409: Software Requirements Engineering testing tools. (Dual-listed with COM S 509). (Cross-listed with S E). (3-0) Cr. 3. F. Prereq: COM S 309 COM S 418: Introduction to Computational Geometry The requirements engineering process including identification of (Dual-listed with COM S 518). (3-0) Cr. 3. Alt. S., offered odd-numbered stakeholders requirements elicitation techniques such as interviews years. and prototyping, analysis fundamentals, requirements specification, Prereq: COM S 311 or permission of instructor and validation. Use of Models: State-oriented, Function-oriented, and Introduction to data structures, algorithms, and analysis techniques Object-oriented. Documentation for Software Requirements. Informal, for computational problems that involve geometry. Line segment semi-formal, and formal representations. Structural, informational, intersection, polygon triangulation, 2D linear programming, range queries, and behavioral requirements. Non-functional requirements. Use of point location, arrangements and duality, Voronoi diagrams and Delaunay requirements repositories to manage and track requirements through triangulation, convex hulls, robot motion planning, visibility graphs. Other the life cycle. Case studies, software projects, written reports, and oral selected topics. Programming assignments. presentations will be required. Iowa State University – 2016-2017 7

COM S 421: Logic for Mathematics and Computer Science COM S 435: Algorithms for Large Data Sets: Theory and Practice (Cross-listed with MATH). (3-0) Cr. 3. S. (3-0) Cr. 3. S. Prereq: MATH 301 or MATH 207 or MATH 317 or COM S 230 Prereq: COM S 228, COM S 230 or CPR E 310, COM S 311 or equivalent Propositional and predicate logic. Topics selected from Horn logic, Challenges involved in solving computational problems on massive data equational logic, resolution and unification, foundations of logic sets. Discussion of computational problems that arise in the context programming, reasoning about programs, program specification and of web search, social network analysis, recommendation systems, verification, model checking and binary decision diagrams, temporal logic and online advertising etc. Theoretical aspects include modeling the and modal logic. computational problems using graphs, study of similarity measures and hash functions, and design of efficient algorithms for graphs. Practical COM S 424: Introduction to High Performance Computing aspects include implementation and performance evaluation of the (Cross-listed with CPR E, MATH). (2-2) Cr. 3. F. algorithms on real world data sets. Graduate credit requires a written Prereq: MATH 265; MATH 207 or MATH 317 report on current research. Numerical serial and parallel computing using the Message Passing Interface. Oral and written semester project. COM S 437: Computer Game and Media Programming (3-0) Cr. 3. S. COM S 425: High Performance Computing for Scientific and Engineering Prereq: COM S 336 or permission of instructor Applications Students will learn video game programming using current game engine (Cross-listed with CPR E). (3-1) Cr. 3. S. interfaces with real hardware. Particular attention is paid to the console Prereq: COM S 311, COM S 230, ENGL 250, SP CM 212 architecture, development environment, tool chains, 2D graphics, 3D Introduction to high performance computing platforms including parallel graphics, controllers, memory management, and audio systems. Students computers and workstation clusters. Discussion of parallel architectures, will complete the course by writing a simple game that runs on console performance, programming models, and software development issues. hardware. Sample applications from science and engineering. Practical issues in high performance computing will be emphasized via a number of COM S 440: Principles and Practice of Compiling programming projects using a variety of programming models and case (Dual-listed with COM S 540). (3-1) Cr. 3. Alt. S., offered odd-numbered studies. Oral and written reports. years. Prereq: COM S 331, COM S 342, ENGL 250, SP CM 212 COM S 426: Introduction to Parallel Algorithms and Programming Theory of compiling and implementation issues of programming (Dual-listed with COM S 526). (Cross-listed with CPR E). (3-2) Cr. 4. F. languages. Programming projects leading to the construction of a Prereq: CPR E 308 or COM S 321, CPR E 315 or COM S 311 compiler. Projects with different difficulty levels will be given for 440 Models of parallel computation, performance measures, basic parallel and 540. Topics: lexical, syntax and semantic analyses, syntax-directed constructs and communication primitives, parallel programming using translation, runtime environment and library support. Written reports. MPI, parallel algorithms for selected problems including sorting, matrix, tree and graph problems, fast Fourier transforms. COM S 441: Programming Languages (Dual-listed with COM S 541). (3-1) Cr. 3. F. COM S 430: Advanced Programming Tools Prereq: COM S 342 or COM S 440 (3-1) Cr. 3. S. Survey of the goals and problems of language design. Formal and Prereq: COM S 311, COM S 362 or COM S 363, ENGL 250, SP CM 212 informal studies of a wide variety of programming language features Topics in advanced programming techniques and tools widely used by including type systems. Creative use of functional and declarative industry (e.g., event-driven programming and graphical user interfaces, programming paradigms. standard libraries, client/server architectures and techniques for distributed applications). Emphasis on programming projects in a COM S 444: Bioinformatic Analysis modern integrated development environment. Oral and written reports. (Cross-listed with BCB, BCBIO, BIOL, CPR E, GEN). (4-0) Cr. 4. F. Prereq: MATH 165 or STAT 401 or equivalent. COM S 433: Computational Models of Nanoscale Self-Assembly Broad overview of bioinformatics with a significant problem-solving (Dual-listed with COM S 533). (3-0) Cr. 3. S. component, including hands-on practice using computational tools to Prereq: Minimum of C- in COM S 331 or consent of the instructor solve a variety of biological problems. Topics include: bioinformatic data Modeling and analysis of natural and engineered systems that processing, Perl programming, genome assembly, database search, spontaneously assemble themselves from small components. Topics sequence alignment, gene prediction, next-generation sequencing, include biomolecular self-assembly, tile assembly models, computation comparative and functional genomics, and systems biology. via self-assembly, distributed folding, origami models, and self- repair. Emphasis on mathematical methods of describing, simulating, COM S 454: Distributed Systems programming, and verifying the behaviors of self-assembling systems. (Dual-listed with COM S 554). (Cross-listed with CPR E). (3-1) Cr. 3. S. Graduate credit requires a written or oral report on current research. Prereq: COM S 311, COM S 352 (3-1) Cr. 3. Theoretical and practical issues of design and implementation of distributed systems. The client server paradigm, inter-process communications, synchronization and concurrency control, naming, consistency and replication, fault tolerance, and distributed file systems. Graduate credit requires additional in-depth study of concepts. Programming projects and written reports. 8 Computer Science

COM S 455: Simulation: Algorithms and Implementation COM S 477: Problem Solving Techniques for Applied Computer Science (Dual-listed with COM S 555). (3-0) Cr. 3. Alt. F., offered even-numbered (Dual-listed with COM S 577). (3-0) Cr. 3. Alt. F., offered even-numbered years. years. Prereq: COM S 311 and COM S 230, STAT 330, ENGL 150, SP CM 212 Prereq: COM S 228; COM S 230 or CPR E 310, MATH 166, MATH 207 or MATH Introduction to discrete-event simulation with a focus on computer 317, or consent of the instructor science applications, including performance evaluation of networks Selected topics in applied mathematics and modern heuristics that and distributed systems. Overview of algorithms and data structures have found applications in areas such as geometric modeling, graphics, necessary to implement simulation software. Discrete and continuous robotics, vision, human machine interface, speech recognition, computer stochastic models, random number generation, elementary statistics, animation, etc. Homogeneous coordinates and transformations, simulation of queuing and inventory systems, Monte Carlo simulation, perspective projection, quaternions and rotations, polynomial point and interval parameter estimation. Graduate credit requires interpolation, roots of polynomials, resultants, solution of linear and additional in-depth study of concepts. Oral and written reports. nonlinear equations, approximation, data fitting, Fourier series and fast Fourier transform, linear programming, nonlinear optimization, Lagrange COM S 461: Principles and Internals of Database Systems multipliers, parametric and algebraic curves, curvature, Frenet formulas, (Dual-listed with COM S 561). (3-1) Cr. 3. F. Bezier curves. Programming components. A scholarly report is required Prereq: COM S 311, ENGL 250, SP CM 212. for graduate credit. Models for structured and semistructured data. Algebraic, first order, and user-oriented query languages. Database schema design. COM S 481: Numerical Methods for Differential Equations Physical storage, access methods, and query processing. Transaction (Cross-listed with MATH). (3-0) Cr. 3. S. management, concurrency control, and crash recovery. Database Prereq: MATH 265 and either MATH 266 or MATH 267; knowledge of a security. Information integration using data warehouses, mediators, programming language wrappers, and . Parallel and distributed databases, and First order Euler method, high order Runge-Kutta method, and multistep special purpose databases. Students enrolling in Com S 561 will require method for solving ordinary differential equations. Finite difference and additional study of advanced concepts in database systems. finite element methods for solving partial differential equations. Local truncation error, stability, and convergence for finite difference method. COM S 472: Principles of Artificial Intelligence Numerical solution space, polynomial approximation, and error estimate (Dual-listed with COM S 572). (3-1) Cr. 3. F. for finite element method. Prereq: COM S 311, COM S 230 or CPR E 310, STAT 330, ENGL 250, SP CM 212, COM S 342 or comparable programming experience COM S 486: Fundamental Concepts in Computer Networking Specification, design, implementation, and selected applications of (3-0) Cr. 3. S. intelligent software agents and multi-agent systems. Computational Prereq: COM S 352 models of intelligent behavior, including problem solving, knowledge An introduction to fundamental concepts in the design and representation, reasoning, planning, decision making, learning, implementation of computer communication in both the wired and perception, action, communication and interaction. Reactive, deliberative, wireless networks, their protocols, and applications. Layered network rational, adaptive, learning and communicative agents and multiagent architecture in the Internet, applications, transport, Socket APIs, network, systems. Artificial intelligence programming. A research project and a and data link layers and their protocols, multimedia networking, and written report is required for students enrolled in Com S 572. network security.

COM S 474: Introduction to Machine Learning COM S 487: Network Programming, Applications, and Research Issues (3-1) Cr. 3. Alt. S., offered odd-numbered years. (Dual-listed with COM S 587). (3-0) Cr. 3. S. Prereq: COM S 311, COM S 230 or CPR E 310, STAT 330, MATH 165, ENGL 250, Prereq: Com S 352 or CPR E 489 or equivalent. SP CM 212, COM S 342 or comparable programming experience Programming paradigms for building distributed and networking Basic principles, techniques, and applications of Machine Learning. applications, including multithreaded client-server programming, socket Design, analysis, implementation, and applications of learning algorithms. programming, distributed object frameworks and programming suites, Topics include: statistical learning, pattern classification, function and web computing and security. Introduction to some on-going research approximation, Bayesian learning, linear models, artificial neural issues in distributed and networking applications, including peer-to- networks, support vector machines, decision trees, instance based peer computing, multimedia communications, and mobile computing learning, probabilistic graphical models, , selected and networking. A written report and an oral presentation is required for applications in automated knowledge acquisition, pattern recognition, students enrolling in Com S 587. and data mining. COM S 490: Independent Study Cr. arr. Repeatable, maximum of 9 credits. F.S. Prereq: 6 credits in computer science, permission of instructor Offered on a satisfactory-fail basis only. No more than 9 credits of Com S 490 may be counted toward graduation.

COM S 490H: Independent Study: Honors Cr. arr. Repeatable, maximum of 9 credits. F.S. Prereq: 6 credits in computer science, permission of instructor Offered on a satisfactory-fail basis only. No more than 9 credits of Com S 490 may be counted toward graduation. Iowa State University – 2016-2017 9

Courses primarily for graduate students, open to qualified COM S 514: Gerontechnology in Smart Home Environments undergraduates: (Dual-listed with COM S 414). (3-0) Cr. 3. F. Prereq: COM S 227 or (COM S 207 or GERON 377 or ARTGR 271) or COM S 502: Complex Adaptive Systems Seminar equivalent. (Cross-listed with CAS). (1-0) Cr. 1. F.S. An interdisciplinary course designed for students who are interested Prereq: Admission to CAS minor in assistive technology, pervasive computing, mobile computing and Understanding core techniques in artificial life is based on basic readings principles of universal and inclusive design for end users, in particular, in complex adaptive systems. Techniques of complex system analysis the elderly population. Students will work in semester-long projects as methods including: evolutionary computation, neural nets, agent based interdisciplinary teams to apply knowledge obtained from lectures and simulations (agent based computational economics). Large-scale mutual presentations. For graduate credit students are required to submit simulations are to be emphasized, e.g. power grids, whole ecosystems. a research report and give an oral presentation.

COM S 503: Complex Adaptive Systems Concepts and Techniques COM S 515: Software System Safety (Cross-listed with CAS). (3-0) Cr. 3. S. (Dual-listed with COM S 415). (3-0) Cr. 3. S. Prereq: Admission to CAS minor or related field Prereq: COM S 309 or COM S 311, COM S 342 Survey of complex systems and their analysis. Examples are drawn from An introduction to the analysis, design, and testing of software for engineering, computer science, biology, economics and physics. safety-critical and high-integrity systems. Analysis techniques, formal verification, fault identification and recovery, model checking, and COM S 509: Software Requirements Engineering certification issues. Emphasizes a case-based and systematic approach (Dual-listed with COM S 409). (3-0) Cr. 3. F. to software's role in safe systems. Prereq: COM S 309 The requirements engineering process including identification of COM S 518: Introduction to Computational Geometry stakeholders requirements elicitation techniques such as interviews (Dual-listed with COM S 418). (3-0) Cr. 3. Alt. S., offered odd-numbered and prototyping, analysis fundamentals, requirements specification, years. and validation. Use of Models: State-oriented, Function-oriented, and Prereq: COM S 311 or permission of instructor Object-oriented. Documentation for Software Requirements. Informal, Introduction to data structures, algorithms, and analysis techniques semi-formal, and formal representations. Structural, informational, for computational problems that involve geometry. Line segment and behavioral requirements. Non-functional requirements. Use of intersection, polygon triangulation, 2D linear programming, range queries, requirements repositories to manage and track requirements through point location, arrangements and duality, Voronoi diagrams and Delaunay the life cycle. Case studies, software projects, written reports, and oral triangulation, convex hulls, robot motion planning, visibility graphs. Other presentations will be required. selected topics. Programming assignments.

COM S 510: Distributed Software Development COM S 525: Numerical Analysis of High Performance Computing (Dual-listed with COM S 410). (3-0) Cr. 3. F. (Cross-listed with CPR E, MATH). (3-0) Cr. 3. S. Prereq: COMS 228, COMS 309, COMS 327 Prereq: CPR E 308 or MATH 481; experience in scientific programming; Team with students at foreign universities to develop a software knowledge of FORTRAN or C application. Importance of distributed development. Design for Introduction to parallelization techniques and numerical methods for distributed development, effective processes for distributed development, distributed memory high performance computers. A semester project in and cultural issues in distributed development, organizing for distributed an area related to each student’s research interests is required. development, communication techniques and skills for distributed development,including oral presentations. Graduate credit requires in-- COM S 526: Introduction to Parallel Algorithms and Programming depth study of concepts. (Dual-listed with COM S 426). (Cross-listed with CPR E). (3-2) Cr. 4. F. Prereq: CPR E 308 or COM S 321, CPR E 315 or COM S 311 COM S 511: Design and Analysis of Algorithms Models of parallel computation, performance measures, basic parallel (Cross-listed with CPR E). (3-0) Cr. 3. F. constructs and communication primitives, parallel programming using Prereq: COM S 311 MPI, parallel algorithms for selected problems including sorting, matrix, A study of basic algorithm design and analysis techniques. Advanced tree and graph problems, fast Fourier transforms. data structures, amortized analysis and randomized algorithms. Applications to sorting, graphs, and geometry. NP-completeness and COM S 531: Theory of Computation approximation algorithms. (3-0) Cr. 3. S. Prereq: COM S 331 COM S 512: Formal Methods in Software Engineering A systematic study of the fundamental models and analytical methods (Dual-listed with COM S 412). (3-0) Cr. 3. S. of theoretical computer science. Computability, the Church-Turing thesis, Prereq: COM S 311, COM S 330 decidable and undecidable problems, and the elements of recursive A study of formal techniques for model-based specification and function theory. Time complexity, logic, Boolean circuits, and NP- verification of software systems. Topics include logics, formalisms, graph completeness. Role of randomness in computation. theory, numerical computations, algorithms and tools for automatic analysis of systems. Graduate credit requires in-depth study of concepts. 10 Computer Science

COM S 533: Computational Models of Nanoscale Self-Assembly COM S 551: Computational Techniques for Genome Assembly and (Dual-listed with COM S 433). (3-0) Cr. 3. S. Analysis Prereq: Minimum of C- in COM S 331 or consent of the instructor (3-0) Cr. 3. Alt. F., offered odd-numbered years. Modeling and analysis of natural and engineered systems that Prereq: COM S 311 and some knowledge of programming spontaneously assemble themselves from small components. Topics Introduction to practical sequence assembly and comparison techniques. include biomolecular self-assembly, tile assembly models, computation Topics include global alignment, local alignment, overlapping alignment, via self-assembly, distributed folding, origami models, and self- banded alignment, linear-space alignment, word hashing, DNA-protein repair. Emphasis on mathematical methods of describing, simulating, alignment, DNA-cDNA alignment, comparison of two sets of sequences, programming, and verifying the behaviors of self-assembling systems. construction of contigs, and generation of consensus sequences. Focus Graduate credit requires a written or oral report on current research. on development of sequence assembly and comparison programs.

COM S 540: Principles and Practice of Compiling COM S 552: Principles of Operating Systems (Dual-listed with COM S 440). (3-1) Cr. 3. Alt. S., offered odd-numbered (3-0) Cr. 3. F. years. Prereq: COM S 352 Prereq: COM S 331, COM S 342, ENGL 250, SP CM 212 A comparative study of high-level language facilities for process Theory of compiling and implementation issues of programming synchronization and communication. Formal analysis of deadlock, languages. Programming projects leading to the construction of a concurrency control and recovery. Protection issues including capability- compiler. Projects with different difficulty levels will be given for 440 based systems, access and flow control, encryption, and authentication. and 540. Topics: lexical, syntax and semantic analyses, syntax-directed Additional topics chosen from distributed operating systems, soft real- translation, runtime environment and library support. Written reports. time operating systems, and advanced security issues.

COM S 541: Programming Languages COM S 554: Distributed Systems (Dual-listed with COM S 441). (3-1) Cr. 3. F. (Dual-listed with COM S 454). (Cross-listed with CPR E). (3-1) Cr. 3. S. Prereq: COM S 342 or COM S 440 Prereq: COM S 311, COM S 352 Survey of the goals and problems of language design. Formal and (3-1) Cr. 3. Theoretical and practical issues of design and implementation informal studies of a wide variety of programming language features of distributed systems. The client server paradigm, inter-process including type systems. Creative use of functional and declarative communications, synchronization and concurrency control, naming, programming paradigms. consistency and replication, fault tolerance, and distributed file systems. Graduate credit requires additional in-depth study of concepts. COM S 544: Fundamentals of Bioinformatics Programming projects and written reports. (Cross-listed with BCB, CPR E, GDCB). (4-0) Cr. 4. F. Prereq: MATH 165 or STAT 401 or equivalent COM S 555: Simulation: Algorithms and Implementation Survey of key bioinformatics methods, including hands-on use of (Dual-listed with COM S 455). (3-0) Cr. 3. Alt. F., offered even-numbered computational tools to solve various biological problems. Topics years. include: database searching, sequence alignment, gene prediction, RNA Prereq: COM S 311 and COM S 230, STAT 330, ENGL 150, SP CM 212 and protein structure prediction, construction of phylogenetic trees, Introduction to discrete-event simulation with a focus on computer comparative and functional genomics, and systems biology. science applications, including performance evaluation of networks and distributed systems. Overview of algorithms and data structures COM S 549: Advanced Algorithms in Computational Biology necessary to implement simulation software. Discrete and continuous (Cross-listed with CPR E). (3-0) Cr. 3. Alt. S., offered even-numbered years. stochastic models, random number generation, elementary statistics, Prereq: COM S 311 and either COM S 228 or COM S 208 simulation of queuing and inventory systems, Monte Carlo simulation, Design and analysis of algorithms for applications in computational point and interval parameter estimation. Graduate credit requires biology, pairwise and multiple sequence alignments, approximation additional in-depth study of concepts. Oral and written reports. algorithms, string algorithms including in-depth coverage of suffix trees, semi-numerical string algorithms, algorithms for selected COM S 556: Analysis Algorithms for Stochastic Models problems in fragment assembly, phylogenetic trees and protein folding. (3-0) Cr. 3. Alt. S., offered odd-numbered years. No background in biology is assumed. Also useful as an advanced Prereq: COM S 331, MATH 307, and STAT 330 algorithms course in string processing. Introduction to the use of stochastic models to study complex systems, including network communication and distributed systems. COM S 550: Evolutionary Problems for Computational Biologists Data structures and algorithms for analyzing discrete-state models (3-0) Cr. 3. Alt. F., offered odd-numbered years. expressed in high-level formalisms. State space and reachability graph Prereq: COM S 311 and some knowledge of programming construction, model checking, Markov chain construction and numerical Discussion and analysis of basic evolutionary principles and the solution, computation of performance measures, product-form models, necessary knowledge in computational biology to solve real world approximations, and advanced techniques. problems. Topics include character and distance based methods, phylogenetic tree distances, and consensus methods, and approaches COM S 557: Computer Graphics and Geometric Modeling to extract the necessary information from sequence-databases to build (Cross-listed with CPR E, M E). (3-0) Cr. 3. F. phylogenetic trees. Prereq: M E 421, programming experience in C Fundamentals of computer graphics technology. Data structures. Parametric curve and surface modeling. Solid model representations. Applications in engineering design, analysis, and manufacturing. Iowa State University – 2016-2017 11

COM S 558: Introduction to the 3D Visualization of Scientific Data COM S 570: Bioinformatics IV (Computational Functional Genomics and (Cross-listed with GEOL, HCI). (2-2) Cr. 3. Alt. F., offered even-numbered Systems Biology) years. (Cross-listed with BCB, CPR E, GDCB, STAT). (3-0) Cr. 3. S. Prereq: Graduate-student standing in the mathematical or natural sciences or Prereq: BCB 567 or COM S 311, COM S 228, GEN 409, STAT 430 engineering; basic programming knowledge Algorithmic and statistical approaches in computational functional Introduction to visualizing scientific information with 3D computer genomics and systems biology. Elements of experiment design. Analysis graphics and their foundation in human perception. Overview of different of high throughput gene expression, proteomics, and other datasets visualization techniques and examples of 3D visualization projects from obtained using system-wide measurements. Topological analysis, different disciplines (natural sciences, medicine, and engineering). Class module discovery, and comparative analysis of gene and protein project in interactive 3D visualization using the ParaView, Mayavi, TVTK, networks. Modeling, analysis, simulation and inference of transcriptional VTK or a similar system. regulatory modules and networks, protein-protein interaction networks, metabolic networks, cells and systems: Dynamic systems, Boolean, and COM S 561: Principles and Internals of Database Systems probabilistic models. Multi-scale, multi-granularity models. Ontology- (Dual-listed with COM S 461). (3-1) Cr. 3. F. driven, network based, and probabilistic approaches to information Prereq: COM S 311, ENGL 250, SP CM 212. integration. Models for structured and semistructured data. Algebraic, first order, and user-oriented query languages. Database schema design. COM S 572: Principles of Artificial Intelligence Physical storage, access methods, and query processing. Transaction (Dual-listed with COM S 472). (3-1) Cr. 3. F. management, concurrency control, and crash recovery. Database Prereq: COM S 311, COM S 230 or CPR E 310, STAT 330, ENGL 250, SP CM security. Information integration using data warehouses, mediators, 212, COM S 342 or comparable programming experience wrappers, and data mining. Parallel and distributed databases, and Specification, design, implementation, and selected applications of special purpose databases. Students enrolling in Com S 561 will require intelligent software agents and multi-agent systems. Computational additional study of advanced concepts in database systems. models of intelligent behavior, including problem solving, knowledge representation, reasoning, planning, decision making, learning, COM S 567: Bioinformatics I (Fundamentals of Genome Informatics) perception, action, communication and interaction. Reactive, deliberative, (Cross-listed with BCB, CPR E). (3-0) Cr. 3. F. rational, adaptive, learning and communicative agents and multiagent Prereq: COM S 228; COM S 330; credit or enrollment in BIOL 315, STAT 430 systems. Artificial intelligence programming. A research project and a Biology as an information science. Review of algorithms and information written report is required for students enrolled in Com S 572. processing. Generative models for sequences. String algorithms. Pairwise sequence alignment. Multiple sequence alignment. Searching COM S 573: Machine Learning sequence databases. Genome sequence assembly. (3-1) Cr. 3. S. Prereq: COM S 311, COM S 362, STAT 330 COM S 568: Bioinformatics II (Advanced Genome Informatics) Algorithmic models of learning. Design, analysis, implementation and (Cross-listed with BCB, GDCB, STAT). (3-0) Cr. 3. S. applications of learning algorithms. Learning of concepts, classification Prereq: BCB 567 or (BIOL 315 and STAT 430), credit or enrollment in GEN 409 rules, functions, relations, grammars, probability distributions, value Advanced sequence models. Basic methods in molecular phylogeny. functions, models, skills, behaviors and programs. Agents that learn from Hidden Markov models. Genome annotation. DNA and protein motifs. observation, examples, instruction, induction, deduction, reinforcement Introduction to gene expression analysis. and interaction. Computational learning theory. Data mining and knowledge discovery using artificial neural networks, support vector COM S 569: Bioinformatics III (Structural Genome Informatics) machines, decision trees, Bayesian networks, association rules, (Cross-listed with BBMB, BCB, CPR E). (3-0) Cr. 3. F. , and visualization. Learning Prereq: BCB 567, BBMB 316, GEN 409, STAT 430 from heterogeneous, distributed, dynamic data and knowledge sources. Algorithmic and statistical approaches in structural genomics including Learning in multi-agent systems. Selected applications in automated protein, DNA and RNA structure. Structure determination, refinement, knowledge acquisition, pattern recognition, program synthesis, representation, comparison, visualization, and modeling. Analysis and bioinformatics and Internet-based information systems. Oral and written prediction of protein secondary and tertiary structure, disorder, protein reports. cores and surfaces, protein-protein and protein-nucleic acid interactions, protein localization and function. COM S 575: Computational Perception (Cross-listed with CPR E, HCI). (3-0) Cr. 3. S. Prereq: Graduate standing or permission of instructor This class covers statistical and algorithmic methods for sensing, recognizing, and interpreting the activities of people by a computer. This semester we will focus on machine perception techniques that facilitate and augment human-computer interaction. The main goal of the class is to introduce computational perception on both theoretical and practical levels. Participation in small groups to design, implement, and evaluate a prototype of a human-computer interaction system that uses one or more of the techniques covered in the lectures. 12 Computer Science

COM S 577: Problem Solving Techniques for Applied Computer Science COM S 590: Special Topics (Dual-listed with COM S 477). (3-0) Cr. 3. Alt. F., offered even-numbered Cr. arr. Repeatable. years. Prereq: Permission of instructor Prereq: COM S 228; COM S 230 or CPR E 310, MATH 166, MATH 207 or MATH Offered on a satisfactory-fail basis only. 317, or consent of the instructor Selected topics in applied mathematics and modern heuristics that COM S 592: Research Colloquia have found applications in areas such as geometric modeling, graphics, Cr. 1. F.S. robotics, vision, human machine interface, speech recognition, computer Prereq: Graduate classification animation, etc. Homogeneous coordinates and transformations, Attend Computer Science Research Colloquia. Written summary is perspective projection, quaternions and rotations, polynomial required. Offered on a satisfactory-fail basis only. interpolation, roots of polynomials, resultants, solution of linear and COM S 598: Graduate Internship nonlinear equations, approximation, data fitting, Fourier series and fast Cr. R. Repeatable. F.S.SS. Fourier transform, linear programming, nonlinear optimization, Lagrange Prereq: Graduate Classification multipliers, parametric and algebraic curves, curvature, Frenet formulas, Supervised internship working in professional settings appropriate to the Bezier curves. Programming components. A scholarly report is required student's degree program. Academic work under faculty supervision. for graduate credit. COM S 599: Creative Component COM S 581: Computer Systems Architecture Cr. 1-3. (Cross-listed with CPR E). (3-0) Cr. 3. F. Creative component for nonthesis option of Master of Science degree. Prereq: CPR E 381 Offered on a satisfactory-fail basis only. Quantitative principles of computer architecture design, instruction set design, processor architecture: pipelining and superscalar design, Courses for graduate students: instruction level parallelism, memory organization: cache and virtual memory systems, multiprocessor architecture, cache coherency, COM S 610: Seminar interconnection networks and message routing, I/O devices and Cr. arr. peripherals. Offered on a satisfactory-fail basis only.

COM S 583: Reconfigurable Computing Systems COM S 611: Advanced Topics in Analysis of Algorithms (Cross-listed with CPR E). (3-0) Cr. 3. (3-0) Cr. 3. Repeatable. Alt. S., offered odd-numbered years. Prereq: Background in computer architecture, design, and organization Prereq: COM S 511, COM S 531 Introduction to reconfigurable computing, FPGA technology and Advanced algorithm analysis and design techniques. Topics include architectures, spatial computing architectures such as systolic and bit graph algorithms, algebraic algorithms, number-theoretic algorithms, serial adaptive network architectures, static and dynamic rearrangeable randomized and parallel algorithms. Intractable problems and NP- interconnection architectures, processor architectures incorporating completeness. Advanced data structures. reconfigurabiltiy. COM S 612: Distributed Algorithms COM S 586: Computer Network Architectures (3-0) Cr. 3. Alt. S., offered even-numbered years. (3-0) Cr. 3. F. Prereq: COM S 511 or COM S 531 Prereq: COM S 511, COM S 552 or CPR E 489 The theory of distributed computation. Algorithms, lower bounds and Design and implementation of computer communication networks: impossibility results. Leader Elections, mutual exlusion, consensus and layered network architectures, local area networks, data link protocols, clock synchronization algorithms. Synchronous, asynchronous and distributed routing, transport services, network programming partially synchronous distributed systems models. Shared memory and interfaces, network applications, error control, flow/congestion control, message passing systems. Fault-tolerance and randomization. Broadcast interconnection of heterogeneous networks, TCP/IP, ATM networks, and multicast. Wait-free object simulations. Distributed shared memory. multimedia communications, IP and application multicast, overlay networks, network security and web computing. COM S 626: Parallel Algorithms for Scientific Applications (Cross-listed with CPR E). (3-0) Cr. 3. COM S 587: Network Programming, Applications, and Research Issues Prereq: CPR E 526 (Dual-listed with COM S 487). (3-0) Cr. 3. S. Algorithm design for high-performance computing. Parallel algorithms Prereq: Com S 352 or CPR E 489 or equivalent. for multidimensional tree data structures, space-filling curves, random Programming paradigms for building distributed and networking number generation, graph partitioning and load balancing. Applications to applications, including multithreaded client-server programming, socket grid and particle-based methods and computational biology. programming, distributed object frameworks and programming suites, and web computing and security. Introduction to some on-going research issues in distributed and networking applications, including peer-to- peer computing, multimedia communications, and mobile computing and networking. A written report and an oral presentation is required for students enrolling in Com S 587. Iowa State University – 2016-2017 13

COM S 631: Advanced Topics in Computational Complexity COM S 661: Advanced Topics in Database Systems (3-0) Cr. 3. Repeatable. Alt. F., offered even-numbered years. (3-0) Cr. 3. Repeatable. Alt. F., offered even-numbered years. Prereq: COM S 531 Prereq: COM S 461 or COM S 561 Advanced study in the quantitative theory of computation. Time and Advanced topics chosen from the following: database design, data space complexity of algorithmic problems. The structure of P, NP, models, query systems, query optimization, incomplete information, PH, PSPACE, and other complexity classes, especially with respect to logic and databases, multimedia databases; temporal, spatial and resource-bounded reducibilities and complete problems. Complexity belief databases, semistructured data, concurrency control, parallel and relative to auxiliary information, including oracle computation and distributed databases, information retrieval, data warehouses, wrappers, relativized classes, randomized algorithms, advice machines, Boolean mediators, and data mining. circuits. Kolmogorov complexity and randomness. COM S 672: Advanced Topics in Computational Models of Learning COM S 633: Advanced Topics in Computational Randomness (3-0) Cr. 3. Repeatable. Alt. S., offered even-numbered years. (3-0) Cr. 3. Repeatable. Alt. F., offered odd-numbered years. Prereq: COM S 572 or COM S 573 or COM S 472 or COM S 474 Prereq: COM S 531 Selected topics in Computational Learning Theory (PAC learning, Sample Advanced study of the role of randomness in computation. Randomized complexity, VC Dimension, Occam Learning, Boosting, active learning, algorithms, derandomization, and probabilistic complexity classes. Kolomogorov Complexity, Learning under helpful distributions, Mistake Kolmogorov complexity, algorithmic information theory, and algorithmic Bound Analysis). Selected topics in Bayesian and Information Theoretic randomness. Applications chosen from cryptography, interactive proof Models (ML, MAP, MDL, MML). Advanced statistical methods for machine systems, computational learning, lower bound arguments, mathematical learning. Selected topics in . logic, and the organization of complex systems. COM S 673: Advanced Topics in Computational Intelligence COM S 634: Theory of Games, Knowledge and Uncertainty (3-0) Cr. 3. Repeatable. Alt. S., offered odd-numbered years. (3-0) Cr. 3. Alt. S., offered odd-numbered years. Prereq: COM S 572 or COM S 573 or COM S 472 or COM S 474 Prereq: COM S 330 Advanced applications of artificial intelligence in bioinformatics, Fundamentals of Game Theory: individual decision making, strategic and distributed intelligent information networks and the Semantic Web. extensive games, mixed strategies, backward induction, Nash and other Selected topics in distributed learning, incremental learning, multi-task equilibrium concepts. Discussion of Auctions and Bargaining. Repeated, learning, multi-strategy learning; Graphical models, multi-relational Bayesian and evolutionary games. Interactive Epistemology: reasoning learning, and causal inference; statistical natural language processing; about knowledge in multiagent environment, properties of knowledge, modeling the internet and the web; automated scientific discovery; neural agreements, and common knowledge. Reasoning about and representing and cognitive modeling. uncertainty, probabilities, and beliefs. Uncertainty in multiagent environments. Aspects and applications of game theory, knowledge, COM S 681: Advanced Topics in Computer Architecture and uncertainty in other areas, especially Artificial Intelligence and (Cross-listed with CPR E). (3-0) Cr. 3. Alt. S., offered odd-numbered years. Economics, will be discussed. Prereq: CPR E 581. Repeatable with Instructor permission Current topics in computer architecture design and implementation. COM S 641: Advanced Topics in Programming Language Semantics Advanced pipelining, cache and memory design techniques. Interaction (3-0) Cr. 3. Repeatable. Alt. S., offered even-numbered years. of algorithms with architecture models and implementations. Tradeoffs Prereq: COM S 531, COM S 541 in architecture models and implementations. Operational and other mathematical models of programming language semantics. Type systems and their soundness. Applications of COM S 699: Research semantics on areas such as program correctness, language design or Cr. arr. Repeatable. translation. Prereq: Approval of instructor Offered on a satisfactory-fail basis only. COM S 652: Advanced Topics in Distributed Operating Systems (3-0) Cr. 3. Repeatable. Alt. F., offered odd-numbered years. Prereq: COM S 552 Concepts and techniques for network and distributed operating systems: Communications protocols, processes and threads, name and object management, synchronization, consistency and replications for consistent distributed data, fault tolerance, protection and security, distributed file systems, design of reliable software, performance analysis.

COM S 657: Advanced Topics in Computer Graphics (3-0) Cr. 3. Alt. F., offered even-numbered years. Prereq: COM S 228, I E 557/M E 557/CPR E 557/COM S 557 Modern lighting models: Rendering Equation, Spherical Harmonics, Lafortune, Cook-Torrance. Non-polygonal primitives: volumes, points, particles. Textures: filtering, reflections creation. Graphics hardware: pipeline, performance issues, programmability in vertex and fragment path. Per-pixel lighting. Nonphotorealistic rendering. Radiosity; Ray tracing.