Indiana University


ComputerScience






 Home

 Contacts

 Courses
   Overviews
   Descriptions
   Schedules
   All IU Courses

 Academics

 Careers

 Research

 People

 Calendar

 Resources

 Facilities

 Hiring

Course Roster and Bulletin Descriptions

Course numbers

  • Initial letters used in course designations have the following significance: A for non-major, C for undergraduate major core, H for honors, P for programming-in-the-large, B for other courses in the undergraduate and graduate major program, and Y for independent study.
  • The first digit of a course number indicates the level: 1-4 for undergraduate, 5 and 6 for graduate courses, 7 for graduate research and independent study. Undergraduates may take 500 and 600 level courses, but should obtain the instructor's permission for 600 level courses. Note that such courses, taken as an undergraduate, are not generally counted by the graduate school as carrying graduate credit.
  • The middle digit of the number indicates the area: 0-1 for foundations and algorithmics, 2 for programming languages, 3-4 for hardware and software systems, 5-8 for applications, and 9 for special topics.
Courses in relation to programs

For Computer Science Students:

  • Graduate students in computer science and undergraduate students majoring in computer science cannot take A courses for credit towards computer science degree requirements.
  • Graduate students in computer science may take at most one of the following undergraduate courses for credit (prior written permission of the Graduate Program Director must be obtained): B401 (register for A595), B403, P423, P436, and B443.
  • Certain discontinued 400 level courses may carry graduate credit and fulfill other requirements, as detailed in their entries below. The following 400-level courses have been discontinued but will still receive graduate credit: C421, C422, C428, C431, C432, C435, C436, C445, C446, C451, C452, C455, C463, and C464.
For Students from other Departments pursuing a Ph.D. Minor in Computer Science:
  • Only 400 level courses from the group B403, P423, P436, P438, B441, P442, and B443 are approved for graduate credit towards the Ph.D. minor.
  • Only A500 level courses from the group A593, A594, A595, and A596 may be taken for graduate credit towards the Ph.D. minor. These are equivalent to, and should be taken instead of, C335, C343, B401, and C311, respectively.
  • Other graduate courses with the A500 designation do not count towards the Ph.D. Minor, but can be taken for graduate credit.
For Students from other Departments not pursuing a Ph.D. Minor:
  • Graduate students from other departments may take any graduate courses with the A500 designation for credit. In particular, such students should enroll in A591 in place of C211, A592 in place of C212, A593 in place of C335, A594 in place of C343, A595 in place of B401, and A596 in place of C311.
  • Graduate students from other departments can also take the following courses for graduate credit: B403, P423, P436, P438, B441, P442, and B443.
  • Undergraduate students not majoring in computer science should note that it is possible to complete the minor in information technology by taking Axxx courses only.
Links to past and future course pages, if available, may be found in the Courses Overview, and the current schedules in Class Schedules.

Course listing with bulletin descriptions and additional information

Abbreviations
N & M Natural Science and Math distribution credit
P: Prerequisites
C: Corequisites


Courses for Non-Majors

A110 Introduction to Computers and Computing (3 cr.) N & M P: one year of high school algebra or Mathematics M014. No computing experience assumed. How computers work, word processing, spreadsheets, file management, Web browsing, etc. Emphasis on problem solving techniques. Lecture and laboratory. Credit given for only one of A106, A110, and A111.

A111 A Survey of Computers and Computing (1.5 cr.) P: one year of high school algebra or M014, and some prior computing experience. Survey of computing concepts, with emphasis on problem solving techniques. Experience in a variety of popular applications software for tasks such as word processing, Web browsing, spreadsheet calculations, and databases. Lecture and laboratory. Half semester.  Credit given for only one of A106, A110, and A111.

A112 Programming Concepts (1.5 cr.) P: A110, A111, or equivalent computing experience. Introduction to programming for users of computer systems. Emphasis on problem solving techniques. Lecture and laboratory. Half semester.

A113 Data Analysis Using Spreadsheets (1.5 cr.) P: A110, A111, or equivalent. An introduction to data analysis using spreadsheets, including both scientific and business applications. Elementary statistical concepts and their applications to data analysis. Emphasis on problem-solving techniques. Lecture and laboratory. Half semester.

A114 Introduction to Databases (1.5 cr.) P: A110, A111, or equivalent. Introduction to database design concepts. Entering and modifying data, accessing data using visual tools and SQL, building database applications using forms and application development tools. Emphasis on problem-solving techniques. Lecture and laboratory. Half semester.

A115 Using the World Wide Web (1.5 cr.) P: A110, A111, or equivalent computing experience. Browsing (surfing) the Web, information retrieval, and information gathering. Web page authoring. Introduction to network terminology and social implications. Emphasis on problem solving techniques. Lecture and laboratory. Half semester. Credit given for only one of A115 and A148.

A116 Multimedia Communication (1.5 cr.) P: A110, A111, or equivalent computing experience. Introduction to the use of mixed-media software tools for effective communication. Related software and hardware concepts and trends. Emphasis on problem solving techniques. Lecture and laboratory. Half semester.

A190 Excursions into Computing (3 cr.) For non-science majors, this course exposes students to information technology in everyday life and work. Use of computers in everyday problem solving. Labs include hands-on experience with computer applications packages. No credit toward a major in computer science.

A201 Introduction to Programming I (4 cr.) N & M P: two years of high school mathematics or MATH M014. Fundamental programming constructs, including loops, arrays, classes, and files. General problem-solving techniques. Emphasis on modular programming, user-interface design, and developing good programming style. Not intended for computer science majors. Credit not given for both A201 and A597.

A202 Introduction to Programming II (4 cr.) N & M P: A201 or A304. Advanced programming techniques: user-defined functions and types, recursion versus iteration, parameter-passing mechanisms. Classic abstract data types and algorithms. Programming style. Object-oriented programming. May be used in place of C212 to satisfy computer science major requirements.

A216 Digital Multimedia Concepts and Technologies (3.0 cr.) P: A110, A111, or equivalent computing experience. In-depth introduction to the technologies of digital hardware and software relevant to efficient multimedia communication methods. Lectures focus on computational foundations, underlying concepts, and digital methods. Laboratory provides direct experience with concepts presented in lecture, using latest available digital tools to create direct and web-based multimedia content. Lecture and laboratory.

A290 Adventures in Computing (1-2 cr.) P: A201 or C211. Exploration of topics in computing and computer science. Prerequisites, if any, vary by topic. Generally, a basic background in high school mathematics is sufficient. Lecture and laboratory format. Three A290 courses will count as one of seven advanced elective courses for majors.

A304 Introductory C++ Programming (2 cr.) P: programming experience. Topics include aspects of C++ that are not object-oriented, basic data structures, standard libraries, and UNIX tools for project management.

A306 Object-Oriented Programming in C++ (2 cr.) P: A201, A304, A597, or C212. Topics include objects, classes, encapsulation, inheritance, polymorphism, templates and exceptions.

A321 Computing Tools for Scientific Research (4 cr.) N & M C: Math 118 or higher required; Math M211 recommended. Introduction to computer-based tools useful for analysis and understanding of scientific data. Basic methods of computation, data processing, and display systems such at Matlab combined with elementary practical C/C++ programming. Techniques to support customized scientific research tasks, with particular emphasis on biological, neural, and behavioral sciences. Lecture and laboratory.

A338 Network Technologies and Administration (3 cr.) P: A110, EDUC W200, or equivalent computer literacy. Introduction to network principles and current network technology, both hardware and software. Network administration tools and techniques. Laboratory provides practical experience. Dept. note: Credit not given for A247 and A338. Lab fee.

A346 User-Interface Programming (3 cr.) P: A202, A306, A597, C212, or equivalent experience. Learn to prototype and build graphical user interfaces for computer applications. Contemporary software design methodology. Students design and implement prototype interfaces to applications provided by the instructor. Extensive use is made of both commercial and experimental software tools. Lab fee.

A348 Mastering the World Wide Web (3-4 cr.) P: two semesters of programming experience, or equivalent, and some knowledge of operating systems. Project-oriented course leading to ability to maintain a fully functional Web site. Topics include Internet network protocols and Web programming, server administration, protocols, site design, and searching and indexing technologies. Lab fee.

A504 Introductory C++ Programming (2 cr.) P: programming experience. Topics include aspects of C++ that are not object-oriented, basic data structures, standard libraries, and Unix tools for project management. Credit not given for both A504 and either A304, A597, A592, C212, H212, or Business K201.

A506 Object-Oriented Programming in C++ (2 cr.) P: either A201, A304, A504, or A597. Topics include objects, classes, encapsulation, inheritance, polymorphism, templates and exceptions. Credit not given for both A506 and either A306, A202, A592, A598, C212, or H212.

A521 Computing Tools for Scientific Research (3 cr.) C: Math 118 or higher required; Math M211 recommended. Introduction to computer-based tools useful for analysis and understanding of scientific data. Basic methods of computation, data processing, and display systems such at Matlab combined with elementary practical C/C++ programming. Techniques to support customized scientific research tasks, with particular emphasis on biological, neural, and behavioral sciences. Lecture and laboratory.

A538 Network Technologies and Administration (3 cr.) P: A110, EDUC W200, or equivalent computer literacy. Introduction to network principles and current network technology, both hardware and software. Network administration tools and techniques. Laboratory provides practical experience. Dept. note: Credit not given for A547 and A538.

A546 User-Interface Programming (3 cr.) P: either A201, A202, A306, C212, A506, A597, A598, or equivalent experience. Learn to prototype and build graphical user interfaces for computer applications. Contemporary software design methodology. Students design and implement prototype interfaces to applications provided by the instructor. Extensive use will be made of both commercial and experimental software tools. Lab fee. Credit not given for both A546 and A346.

A548 Mastering the World-Wide Web (3 cr.) P: two semesters of programming experience, or equivalent, and some knowledge of operating systems. Project-oriented course leading to ability to maintain a web site with full functionality. Topics include background on internet network protocols and programming, web server administration, advanced web design and authoring, web protocols, interfacing services into the web. Lab fee. Credit not given for both A548 and A348.

A591 Introduction to Computer Science (3 cr.) A first course in computer science for those intending to take advanced computer science courses. Introduction to programming and to algorithm design and analysis. Using the Scheme programming language, the course covers several programming paradigms. Lecture and laboratory. Credit not given for both A591 and C211. Undergraduate CS majors should take C211.

A592 Introduction to Software Systems (3 cr.) P: programming experience. Design of computer software systems and introduction to programming. Topics include the Java programming language and its data structure facilities; building and maintaining large projects; shell tools and system calls. Introduction to object-oriented programming. Lecture and laboratory. Credit not given for both A592 and C212. Undergraduate CS majors should take C212.

A593 Computer Structures (3 cr.) P: A592. Structure and internal operation of computers. The architecture and assembly language programming of a specific computer are stressed, in addition to general principles of hardware organization and low-level software systems. Lecture and laboratory. Lab fee. Credit not given for both A593 and C335. Undergraduate CS majors should take C335. May be credited towards the PhD Minor.

A594 Data Structures (3 cr.) P: A592. P or concurrent A593. Systematic study of data structures encountered in computing problems; structure and use of storage media; methods of representing structured data; and techniques for operating on data structures. Lecture and laboratory. Credit not given for both A594 and C343. Undergraduate CS majors should take C343. May be credited towards the PhD Minor.

A595 Fundamentals of Computing Theory (3 cr.) P: C241. P or C: C212. Fundamentals of formal language theory, computation models and computability, the limits of computability and feasibility, and program verification. Credit not given for both A595 and B401. Undergraduate CS majors should take B401. May be credited towards the PhD Minor, graduate credit available for CS M.S. candidates with special permission.

A596 Programming Languages (3 cr.) P: A593. P or concurrent A594. Systematic approach to programming languages. Relationships among languages, properties and features of languages, and the computer environment necessary to use languages. Lecture and laboratory. Credit not given for both A596 and C311. Undergraduate CS majors should take C311. May be credited towards the PhD Minor.

A597 Introduction to Programming I (3 cr.) Fundamental programming constructs, including loops, arrays, classes, and files. General problem-solving techniques. Emphasis on modular programming, user-interface design, and developing good programming style. Credit not given for A597 and A201. Not intended for computer science majors. A597 corresponds to old A501.

A598 Introduction to Programming II (3 cr.) P: A597, A201, A504, or A304. Advanced programming techniques: user-defined functions and types, recursion vs. iteration, parameter-passing mechanisms. Classic abstract data types and algorithms. Programming style. Object-oriented programming. Credit not given for both A598 and A202. Not intended for computer science majors. A598 corresponds to old A502.


Undergraduate Courses for CSCI Majors

C102 Great Ideas in Computing (3 cr.) P: None. Survey of great ideas in computing and the role of computing in the modern world. Explores how people use computing tools to realize their ideas. Emphasis on the impact of modern technology and the use of hardware and software to create solutions to everyday problems. Lecture and laboratory.

C211 Introduction to Computer Science (4 cr.) N & M P: High school precalculus math. A first course in computer science for those intending to take advanced computer science courses. Introduction to programming and to algorithm design and analysis. Using the Scheme programming language, the course covers several programming paradigms. Credit given for only one of C211 or H211. Lecture and laboratory.

H211 Introduction to Computer Science, Honors (4 cr.) N & M P: High school precalculus math. Honors version of C211. Credit given for only one of H211 or C211.

C212 Introduction to Software Systems (4 cr.) N & M P: C211 or H211. Design of computer software systems and introduction to programming in the environment of a contemporary operating system. Topics include a modern object-oriented programming language; building and maintaining large projects; and understanding the operating system interface. Lecture and laboratory.

H212 Introduction to Software Systems, Honors (4 cr.) N & M P: C211 or H211. Honors version of C212. Credit given for only one of H212 and C212.

C241 Discrete Structures for Computer Science (3 cr.) P: C211 or H211. R: MATH M211. Induction and recursive programs, running time, asymptotic notations, combinatorics and discrete probability, trees and lists, the relational data model, graph algorithms, propositional and predicate logic.

H241 Discrete Structures for Computer Science, Honors (3 cr.) P: H211 or C211.R: MATH M211. Honors version of C241. Credit given for only one of H241 and C241.

C295 Leadership and Learning (1 cr.) P: C211 or A201 or INFO I210. C: Current enrollment in another CSCI or INFO course. Students work within the community to foster interest, knowledge, and appreciation of the computing sciences by preparing and leading presentations and hands-on activities for children in middle and secondary schools. Not for major credit.

C311 Programming Languages (4 cr.) P: C335 or H335. P or C: C343 or H343. Systematic approach to programming languages. Relationships among languages, properties and features of languages, and the computer environment necessary to use languages. Lecture and laboratory.

H311 Programming Languages, Honors (4 cr.) P: H335. P or C: H343. Honors version of C311. Credit given for only one of H311 and C311.

C322 Object Oriented Software Methods (4 cr.) P: C212. Design and implementation of complex software systems and applications exploiting the object oriented paradigm. Selection and effective utilization of object-oriented libraries and interfaces.

C335 Computer Structures (4 cr.) P: C212 or H212. P or C: C241 or H241. Structure and internal operation of computers. The architecture and assembly language programming of a specific computer are stressed, in addition to general principles of hardware organization and low-level software systems. Lecture and laboratory. Lab fee.

H335 Computer Structures, Honors (4 cr.) P: C212 or H212. P or C: H241. Honors version of C335. Credit given for only one of H335 and C335. Lab fee.

C343 Data Structures (4 cr.) P: C212 or H212. P or C: C241 or H241. R: C335 or H335. Systematic study of data structures encountered in computing problems; structure and use of storage media; methods of representing structured data; and techniques for operating on data structures. Lecture and laboratory.

H343 Data Structures, Honors (4 cr.) P: H212 or C212. P or C: H241. R: H335. Honors version of C343. Credit given for only one of H343 and C343.

B351 Introduction to Artificial Intelligence and Computer Simulation (3 cr.) N & M P: C211 or COGS Q350. A survey of techniques for machine intelligence and their relation to human intelligence. Topics include modeling techniques, neural networks and parallel processing systems, problem-solving methods, vision, heuristics, production systems, speech perception, and natural language understanding. Credit given for only one of B351 and COGS Q351.

B355 Autonomous Robotics (3 cr.) P: Two semesters of computer programming or consent of instructor. Introduction to the design, construction and control of autonomous mobile robots. This course covers basic mechanics, electronics and programming for robotics, as well as the applications of robots in cognitive science. Credit given for only one of B355 or COGS Q360.

Y390 Undergraduate Independent Study (1-3 cr.) P: instructor's permission. Independent research based on existing literature or original work. A report, in the style of a departmental technical report, is required. May be repeated but credit not given for more than 6 credit hours of any combination of Y390, Y391, Y398, Y399, Y499, C390, and C391.

Y391 Undergraduate Independent System Development (1-3 cr.) P: instructor's permission. The student designs, programs, verifies, and documents a project assignment. Prior to enrolling, the student must arrange for an instructor to supervise the course activity. May be repeated but credit not given for more than 6 credit hours of any combination of Y390, Y391, Y398, Y399, Y499, C390, and C391.

Y398 Internship in Professional Practice (3-6 cr.) P: sophomore standing and approval of the department. Students receive credit for selected career-related, full-time work. Evaluation by employer and faculty member. Does not count toward distribution requirements. Total credit cannot exceed 6 hours for any combination of computer science courses Y390, Y391, Y398, Y399, C390, and C391.

Y399 Project in Professional Practice (3-6 cr.) P: two of C311, C335, C343, or honors versions; and approval of major department. The student designs, programs, verifies, and documents a project assignment selected in consultation with an employer and the department. Total credit cannot exceed 6 hours for any combination of computer science courses Y390, Y391, Y398, Y399, C390, and C391.

B401 Fundamentals of Computing Theory (3 cr.) P: C241. P or C: C212. Fundamentals of formal language theory, computation models and computability, the limits of computability and feasibility, and program verification.

B403 Introduction to Algorithm Design and Analysis (3 cr.) P: C241 and C343, or honors equivalents, and MATH M216 or M212. Algorithm design methodology. General methods for analysis of algorithms. Analysis of the performance of specific algorithms, such as those for searching and sorting.

P415 Introduction to Verification (3 cr.) P: C311. Tools and techniques for rigorous reasoning about software and digital hardware. Safety, reliability, security, and other design-critical applications. Decision algorithms. Projects involving the use of automated reasoning, such as model checkers, theorem provers, and program transformation.

P423 Compilers (4 cr.) P: C311 or H311. Compiler design and construction, including lexical analysis, parsing, code generation, and optimization. Extensive laboratory exercises.

P436 Introduction to Operating Systems (4 cr.) P: C311, C335, C343, or honors equivalents. Organization and construction of computer systems that manage computational resources. Topics include specification and implementation of concurrency, process scheduling, storage management, device handlers, mechanisms for event coordination. Lecture and laboratory.

P438 Introduction to Computer Networks (4 cr.) Foundations of computer networks. Networking hardware technology such as Ethernet, ATM, wireless. Networking protocols (TCP/IP), routing, error correcting, Network services such as DNS, web servers, and Virtual Private Networks (VPNs), openSSL. Introduction to performance analysis and analysis of web traffic patterns. Credit not given for both P438 and P538.

B441 Digital Design (4 cr.) P: C335 or H335. Organization and logic design of digital systems. Course presents a structured design philosophy, emphasizing hardwired and microprogrammed control. Boolean algebra, hardware building blocks, circuit synthesis, microprogramming. In the laboratory, students build, study, and debug a working minicomputer from elementary hardware components. Lecture and laboratory. Lab fee.

P442 Digital Systems (4 cr.) P: B441. Elements of computer architecture construction of hardware systems, emphasizing a combination of components to form systems, and applications of general principles of computing to digital implementation. Lecture and laboratory. Lab fee.

B443 Introduction to Computer Architecture (3 cr.) P: C335 and C343, or honors versions. P or C: C311 or H311. Principles of processors, control units, and storage systems. Registers, buses, microprogramming, virtual storage. Relation between computer architecture and system software.

B461 Database Concepts (3 cr.) P: C241, C335, C343, or honors versions. Introduction to database concepts and systems. Topics include database models and systems: hierarchical, network, relational, and object-oriented; database design principles; structures for efficient data access; query languages and processing; database applications development; views; security; concurrency; recovery. Students participate in a project to design, implement, and query a database, using a standard database system. Credit given for only one of B461 and B561.

P465-P466 Software Engineering for Information Systems I-II (3-3 cr.) P: C335 and C343, or honors versions. P or C:  B461.Analysis, design, and implementation of information systems. Project specification. Data modeling. Software design methodologies. Software quality assurance. Supervised team development of a real system for a real client. Credit given for only one of  P465-P466 or C445-C446 (discontinued).

B481 Interactive Graphics (4 cr.) P: C343 or H343, MATH M301 or M303. Computer graphics techniques. Introduction to graphics hardware and software. Two-dimensional graphics methods, transformations, and interactive methods. Three-dimensional graphics, transformations, viewing geometry, object modeling, and interactive manipulation methods. Basic lighting and shading. Video and animation methods. Credit given for only one of B481 and B581.

B490 Seminar in Computer Science (1-3 cr.) Special topics in computer science. May be repeated up to a total of 6 credit hours.

H498 Honors Seminar (1-6 cr.) P: Junior or senior major in CS or INFO with GPA at least 3.3 or permission of instructor. A survey of faculty research in computer related fields with different professors discussing their research each week. Total credit in H498 may not exceed 6 hours.

Y499 Honors Research (1-12 cr.) P: approval of departmental honors committee. Credit not given for more than 6 credit hours of Y390, Y391, Y398, Y399, Y499, C390, and C391. I Sem., II Sem., SS.


Graduate Courses for CSCI Majors

B501 Theory of Computing (3 cr.) P: C241. Deterministic and nondeterministic automata, regular expressions, pumping lemmas; context-free languages, parsing, pushdown automata, context-sensitive languages, LBA, LR(k) languages, closure and decidability of language classes. Turing machines, random access machines, grammars, general recursive functions, equivalence of computation models, universal machines, relative computing. Unsolvability, semi-recursive sets, Rice's Theorem. Space and time complexity, NP completeness. B501 corresponds to old C451 and C452.

B502 Computational Complexity (3 cr.) P: B501. Study of computational complexity classes, their intrinsic properties, and relations between them. Topics include time and space computational complexity. Reducibility and completeness of problems within complexity classes. Complexity of optimization problems. Complexity hierarchies. Relativization of the P =? NP conjecture. Parallel computation models and the class NC. B502 corresponds to old C512.

B503 Algorithms Design and Analysis (3 cr.) P: Mathematics M216 and C343. Models, algorithms, recurrences, summations, growth rates. Probabilistic tools, upper and lower bounds; worst-case and average-case analysis, amortized analysis, dynamization. Comparison-based algorithms: search, selection, sorting, hashing. Information extraction algorithms (graphs, databases). Graphs algorithms: spanning trees, shortest paths, connectivity, depth-first search, breadth-first search. Credit not given for both B503 and B403. B503 corresponds to old C455.

B510 Introduction to Applied Logic (3 cr.) P: B501. Structures: relations between structures, term structures. Description: notation and meaning, substitution operations, first order formulas, database languages, program verification conditions, semantics valuation, normal forms, quantifier reduction, axiomatic theories. Proof: resolution, sequential calculi, natural deduction, automated theorem proving, semantic completeness. Limits of formalization: compactness, undecidability of truth, undecidability of canonical theories, non-formalizability of database theory. B510 corresponds to old C615.

P515 Specification and Verification (3 cr.) Tools and techniques for rigorous reasoning about software and digital hardware. Safety, reliability, security, and other design-critical applications. Decision algorithms. Projects involving the use of automated reasoning, such as model checkers, theorem provers, and program transformation. Credit not given for both P415 and P515.

B521 Programming Language Principles (3 cr.) Systematic approach to programming languages. Relationships among languages, properties and features of languages, the computer environment necessary to support language execution. Credit not given for both B521 and either C311 or H311 or A596. B521 corresponds to old C511.

B522 Programming Language Foundations (3 cr.) P: C311 or B521, and B510. Introduction to denotational, operational, and axiomatic approaches to programming language semantics. Semantic analysis of major programming language features. Logics of programs. B522 corresponds to old C616.

P523 Programming Language Implementation (3 cr.) P: B521 or C311. Implementation of traditional and nontraditional computer programming languages. Compilation, including lexical analysis, parsing, optimization, code generation, and testing. Run-time support, including run-time libraries, storage management, input-output. Comparison of implementation techniques. Extensive laboratory exercises. Credit not given for both P523 and P423. P523 corresponds to old C631.

B524 Parallelism in Programming Languages and Systems (3 cr.) P: P436 or P536, either C311, H311 or B521, C343 or H343. Fundamentals of parallel computation, with an emphasis on parallel programming methodology and programming languages. Topics include: Parallel algorithms. Major paradigms for parallel software construction: data parallelism, task/thread parallelism and CSP. Compiling programs for parallel computers.

B534 Distributed Systems (3 cr.) P: P436 or P536. Principles of distributed systems including naming, consistency, concurrency, and security and their role in distributed file systems and file sharing systems. Includes study of and current best practices in distributed computing models: peer-to-peer, grid computing, and distributed object model.

P535 Pervasive Computing (3 cr.) P: object oriented programming Topics in pervasive computing, such as: sensors, mobility, tangibles, ambient displays, middleware, location and context-awareness. User-centered design methods, such as: requirements gathering, design, prototyping and evaluation. Labs cover current technologies, such as sensors and mobile devices. Lecture and laboratory. Lab fee.

P536 Advanced Operating Systems (3 cr.) P: C335 and C343, or honors versions. Advanced topics in operating systems, such as: multi-tasking, synchronization mechanisms, distributed system architecture, client-server models, distributed mutual exclusion and concurrency control, agreement protocols, load balancing, failure recovery, fault tolerance, cryptography, multiprocessor operating systems. Credit not given for both P536 and P436. P536 corresponds to old C535-C536.

P538 Computer Networks (3 cr.) P: Operating systems or networking course. Layered TCP/IP architecture. LAN technologies (Ethernet, wireless, token ring). Switching. Internet addressing (IPv4, IPv6). Routing protocols. Congestion control (TCP, UDP). Applications (DNS, HTTP, peer-to-peer networks). Selection of topics including DHCP, ICMP, VPNs, multicast, security. Credit given for only one of P438 and P538.

B541 Hardware System Design I (3 cr.) P: C335 and C343 or honors version. Structured approach to hardware design, emphasizing hardwired and microprogrammed control. Boolean algebra, hardware building blocks, architecture and control, implementation issues. In the laboratory, students build a working computer using hardware prototyping technologies. Basic training in the use of design and simulation software. Lecture and laboratory. Credit not given for both B541 and B441. Lab fee. B541 corresponds to old C421.

P542 Hardware System Design II (3 cr.) P: B541 or B441. Depending on instructor, a selection of topics in system-level design, such as simulation, logic synthesis, high-level synthesis, codesign, embedded software, verification, test, requirements specification, and others. Projects in system-level design. Computer-aided design tools. Lecture and laboratory. Credit not given for both P542 and P442. Lab fee. P542 corresponds to old C422.

B543 Computer Architecture (3 cr.) P: C335 and C343 or honors versions. Fundamentals of computer design, instruction processing and performance analysis. Architecture of single-processor systems, focusing on pipelining, memory and memory hierarchies, and interconnect technology. Exploration of architecture classes such as high-performance multiprocessors, massively parallel computers, embedded systems. Credit not given for both B543 and B443. B543 corresponds to old C627.

P545 Embedded and Real-Time Systems (3 cr.) P: Any 400 level systems course (middle digit 3 or 4) Design and implementation of purpose-specific, locally distributed software systems. Models and methods for time-critical applications. Real-time operating systems. Testing, validation, and verification. Safety-critical design. Related topics, such as resiliency, synchronization, sensor fusion, etc. Lecture and laboratory.

B551 Elements of Artificial Intelligence (3 cr.) P: C343 or H343, good knowledge of LISP or Scheme. Introduction to major issues and approaches in artificial intelligence. Principles of reactive, goal-based, and utility-based agents. Problem-solving and search. Knowledge representation and design of representational vocabularies. Inference and theorem proving, reasoning under uncertainty, and planning. Overview of machine learning. B551 corresponds to old C563-C564.

B552 Knowledge Based Artificial Intelligence (3 cr.) P: B551. Knowledge-based methods for artificial intelligence systems: knowledge representation, organization, and application. Typical content includes: Principles of memory organization, indexing and retrieval. Memory-based, analogical, and case-based reasoning. Applications to understanding, explanation, planning, and advisory systems. B552 corresponds to in some respects to old C564.

B553 Neural and Genetic Approaches to Artificial Intelligence (3 cr.) P: B551. Approaches to the design of intelligent systems inspired by nervous systems, evolution, and animal behavior. Distributed and perceptually grounded representations. Temporal processing. Perception and action. Genetic search. Unsupervised and reinforcement learning. Comparison of symbolic, subsymbolic, and hybrid approaches to intelligence.

B561 Advanced Database Concepts (3 cr.) P: C241, C335, and C343 or honors versions. Database models and systems: especially relational and object-oriented; relational database design theory; structures for efficient data access; query languages and processing; database applications development; views. Transaction management: concurrency and recovery. Credit not given for both B461 and B561. B561 corresponds to old C646.

P565-P566 Software Engineering I-II (3-3 cr.) P: C343, B461 previously or B561 concurrently. Analysis, design and implementation of software systems. Requirements specification: data and process modeling. Software design methodologies. Software quality assurance: testing and verification. Software development processes. Credit not given for both P465-P466 and P565-P566. P565-P566 corresponds to old C445-C446, respectively.

P573 Scientific Computing (3 cr.) P: Mathematics M303 or M301, M343, C212 or H212. For students from all scientific, engineering, and mathematical disciplines, this course provides an overview of computer hardware, software, and numerical methods that are useful on scientific workstations and supercomputers. Topics include high--performance computer architectures, software tools and packages, characteristics of numerical methods in common use, graphical presentation of results, and performance analysis and improvement. Corresponds to old C671.

B581 Advanced Computer Graphics (3 cr.) P: C343, Mathematics M301 or M303, or equivalent experience. Introduction to graphics hardware and software. Two-dimensional graphics methods, transformations, and interactive methods. Three-dimensional graphics, transformations, viewing geometry, object modeling and interactive manipulation methods. Basic lighting and shading. Video and animation methods. Credit not given for both B581 and B481. Lab fee. B581 corresponds to old C581.

B582 Image Synthesis (3 cr.) P: B581, Mathematics M215. Raster image display: color theory, gamma correction, and filtering. Advanced shading methods: local illumination models, global illumination models. Surface display, including ray tracing and Z-buffering. Solid modeling; spline surfaces, CSG, superquadrics, and deformations. Scientific visualization: isosurfaces and volume rendering. Lab fee. B582 corresponds to old C582.

B599 Teaching in Computer Science (1 cr.) General principles of teaching and practical experiences that relate to teaching computer science. An important feature of the course is the micro-teaching, in which each participant prepares and delivers short lectures to the seminar participants. Each presentation is followed by critical analysis and discussion. B599 corresponds to old C599.

B603 Advanced Algorithms Analysis (3 cr.) P: B503. Advanced topics in analysis of algorithms, including fast algorithms for classical problems, lower bounds results, and statistical behavior. B603 corresponds to old C656.

B607 Philosophy of Computation (3 cr.) P: Consent of instructor. Critical examination of the conceptual foundations of computing. Several different views assessed with respect to conceptual, explanatory, and empirical criteria. Primary focus on formal symbol manipulation, recursive function theory, effective computability, computational complexity, digitality, and information processing. Some non-standard approaches also considered: connectionism, dynamics, and artificial life.

B609 Topics in Algorithms and Computing Theory (1-6 cr.) P: Instructor's permission. Special topics in algorithms and computing theory. May be repeated for credit with permission.

B619 Topics in Applied Logic (1-6 cr.) P: Instructor's permission. Special topics in applied logic. May be repeated for credit with permission.

B621 Advanced Concepts in Programming Languages (3 cr.) P: either C311, H311, or B521. P or concurrent: P423 or P523. Discussion of current issues in the design of programming languages. Modularity, abstraction, and static analysis. Applicative and nonapplicative models. Single and multiple processing. B621 corresponds to old C611.

B622 Programming Language Type Systems (3 cr.) P: C311 or B521. Theoretical foundations and engineering techniques for modern type systems, focusing on polymorphism and subtyping in typed lambda-calculi; applications, including type systems for objects, abstract data types, and modules; issues in type checker implementation and polymorphic type inference. B622 corresponds to old C617.

B629 Topics in Programming Languages (1-6 cr.) P: C311 or B521 and instructor's permission. Special topics in programming languages. May be repeated for credit with permission.

B644 Very Large Scale Integration (3 cr.) P: B441 or B541. Basic theory and practice required to convert hardware algorithms and architecture to silicon structures. Use of state-of-the-art design tools for integrated circuits. Lab fee. B644 corresponds to old C622.

B649 Topics in Systems (1-6 cr.) P: Instructor's permission. Special topics in systems. May be repeated for credit with permission.

B651 Natural Language Processing (3 cr.) P: B551. Recommended: B552 or B553. Theory and methods for natural language processing. Algorithms for sentence parsing and generation. Context-free and unification grammars. Question-and-answer systems. Analysis of narratives. Finite-state approaches to computational phonology and morphology. Machine translation. Machine learning of natural language. Speech recognition. Neural-network and statistical alternatives to symbolic approaches. B651 corresponds to old C661.

B652 Computer Models of Symbolic Learning (3 cr.) P: B552. Symbolic artificial intelligence methods for learning. Inductive and explanation-based generalization. Failure-driven learning. Case-based learning. Typical content includes: Operationality of explanations and utility of learning. Goal-driven learning. Criteria for when, what, and how to learn. Learning in integrated architectures. B652 corresponds to old C665.

B656 Web Mining (3 cr.) Machine learning techniques to mine the Web and other unstructured/semistructured, hypertextual, distributed information repositories. Crawling, indexing, ranking and filtering algorithms using text and link analysis. Applications to search, classification, tracking, monitoring, and Web intelligence. Group project on one of the topics covered in class.

B657 Computer Vision (3 cr.) P: B551. Concepts and methods of machine vision as a branch of artificial intelligence. Basics of digital image processing. Local and global tools for deriving information from image data. Model-based object recognition and scene understanding. Lab fee. B657 corresponds to old C663.

B659 Topics in Artificial Intelligence (1-6 cr.) P: Instructor's permission. Special topics in artificial intelligence. May be repeated for credit with permission.

B661 Database Theory and Systems Design (3 cr.); P: B461 or B561. Database models: relational, deductive, complex-object, object-oriented. Query languages: relational algebra and calculus, datalog, fixpoint logics, object-oriented query languages. Transaction management theory: concurrency control, recovery, distribution. Post-relational and object-oriented database systems.

B665 Software Engineering Management (3 cr.) P: B561 or Business S560. Topics include: the high cost of software, the software life cycle, understanding programming teams, and methodologies for controlling development. Presentation of readings and supervision of programming teams producing software products required. B665 corresponds to old C607.

B666 Software Management Implementation (1-3 cr.) P: B665. Continuation of projects from B665. Periodic reports and a final paper required. If taken for two or more credits, an additional project or paper is required. B666 corresponds to old C608.

B669 Topics in Database and Information Systems (1-6 cr.) P: Instructor's permission. Special topics in database and information systems. May be repeated for credit with permission.

B673 Advanced Scientific Computing (3 cr.) P: P573 and Mathematics M471. Multiprocessor organization: vectorization, memory organization, processor topologies and architectures. Models of parallelism. Programming language and systems for scientific and high performance computing. Environments for interactive scientific experiments and databases. Distributed programming tools. Parallelism in scientific problems: Parallel algorithmic techniques, parallel algorithms and models, parallel performance analysis and debugging.

B679 Topics in Scientific Computing (1-6 cr.) P: Instructor's permission. Special topics in scientific computing. May be repeated for credit with permission.

B689 Topics in Graphics and Human Computer Interaction (1-6 cr.) P: Instructor's permission. Special topics in graphics and human computer interaction. May be repeated for credit with permission.


Graduate Independent Research Courses

Fill out the Independent Research Permission Form, (PDF ), (Postscript ) to indicate which of the Y790 options you wish to register for, and also to register for Y890 or G901. To register for Y798, use the Curricular Practical Training Y798 Authorization Form , (PDF ), (Postscript ).

Y790 Graduate Independent Study (1-6 cr.) Independent study under the direction of a faculty member, culminating in a written report. May be repeated for credit. R grade not allowed. The different departmental options for independent study are: Research and Reading, Software System Development, Master's Research Project, Master's Software Project, and a University Master's Thesis.

Y798 Professional Practicum/Internship (Non-credit.) Provides for participation in graduate level Professional Training and Internship experience. Prerequisites: current enrollment in CS graduate degree program.

Y890 Thesis Readings and Research (1-12 cr.) Research under the direction of a member of the graduate faculty leading to a PhD dissertation.

G901 Advanced Research (6 cr.) PhD dissertation research after the completion of all course requirements.

Back to top.








Valid HTML 4.01!