IU Bulletins HomeBloomington Campusred
Indiana University

Search College of Arts and Sciences 2008-2010 Online Bulletin

Request College of Arts and Sciences 2006-2008 Application Packet

College of Arts and Sciences 2008-2010 Online Bulletin Table of Contents

 

 

College of Arts
and Sciences (College)
2008–2010
Academic Bulletin

College Programs
College of Arts and Sciences (College) 
Kirkwood Hall 104 
130 S. Woodlawn 
Bloomington, IN 47405  
Local (812) 855-1821 
Fax (812) 855-2060 
Contact College
 

Computer Science

Faculty
Introduction
Core Courses
Advanced Courses
Mathematical Science Courses
Major in Computer Science B.A.
Departmental Honors Program
B.A. in Computer Science with Honors
Minor in Computer Science
Minor in Business
Major in Computer Science B.S.
Professional Master in Computer Science
Minor in Information Technology
Course Descriptions

Faculty

Chairperson

Professor Andrew J. Hanson

Director of Undergraduate Studies

Professor Geoffrey Brown

Distinguished Professor

Douglas R. Hofstadter

Oscar R. Ewing Professor

J. Michael Dunn (Emeritus)

Professors

Randall Beer, Randall Bramley, Geoffrey Brown, R. Kent Dybvig, Geoffrey Fox, Daniel P. Friedman, Dennis Gannon, Andrew J. Hanson, Douglas Hofstadter, Steven D. Johnson, David Leake, Daniel Leivant, Andrew Lumsdaine, Michael McRobbie, Paul W. Purdom, Edward L. Robertson, Robert Schnabel, Amr Sabry, Dirk Van Gucht, David S. Wise

Professors Emeriti

J. Michael Dunn, Stan Hagstrom, Franklin Prosser, George Springer, David E. Winkel

Associate Professors

Michael Gasser, Christopher Haynes, Filippo Menczer, Jonathan Mills, Beth Plale, Gregory J. E. Rawlins, Matthias Scheutz

Assistant Professors

Arun Chauhan, Kay Connelly, Minaxi Gupta, Raquel Hill, Catharine Wyss

Senior Lecturer

Suzanne Menzel

Lecturers

Dan-Adrian German, Charles Pope, Jeff Whitmer

Academic Advising

Lindley Hall 225, (812) 855-6038

Return to Top

Introduction

The Department of Computer Science offers a B.A. degree and an undergraduate minor in computer science in the College of Arts and Sciences. Available in the School of Informatics are a B.S. degree and a professional master's program combining the B.S. and M.S. in five years of study, as well as an undergraduate minor in information technology and a minor in informatics. In addition, the department offers a spectrum of courses (labeled A) for students not majoring in computer science.

Return to Top

Major in Computer Science—B.A.

Requirements

Students must complete the following:

  1. All six computer science core courses: C211, C212, C241, C311, C335, and C343 or corresponding H versions. Honors versions (labeled H) of each core course are available in selected semesters.
  2. Mathematics M211.
  3. Two additional advanced computer science courses (please see below). Three computer science A290 topics courses may count as one of these additional courses. At least one course must be at the 400 level.
  4. One foundations course and one mathematical science course (please see below), or two mathematical science courses.

Students must complete the degree requirements of the College of Arts and Sciences.

Return to Top

Advanced Courses

The phrase "advanced computer science courses" refers to the following computer science courses labeled B, C, H, and P (of at least 3 credit hours), numbered 300 or higher; Y399 taken for at least 3 credit hours; Y499 leading to an honors thesis; and Mathematics M471 and M472.

Foundations Courses

The phrase "foundations courses" refers to computer science courses B401, B403, and P415.

Mathematical Science Courses

The phrase "mathematical science courses" refers to Mathematics M212, M213, M301, M303, M311, M312, M343, M348, M365, M371, M384, M391, M405, or M409, or Philosophy P251, P350, or P352.

B.A. in Computer Science with Honors

The computer science honors program gives outstanding students the opportunity to pursue a challenging undergraduate program of advanced courses, independent study, and research leading to the B.A. or B.S. degree with honors in computer science.

Students must satisfy the requirements for the B.A. in computer science and the following additional requirements:

  1. Computer science courses must include at least 11 credit hours of honors courses (H courses or Y499).
  2. Advanced computer science courses must include at least one of the following:
    1. Y499, leading to an honors thesis.
    2. A "programming-in-the-large" (P) course.
    3. A graduate-level computer science course (500 level or above).

Computer science majors with a minimum grade point average of 3.300 in computer science courses as well as a minimum overall grade point average of 3.300 may apply for admission to the honors program. Ordinarily this is done during the second semester of the sophomore year or the first semester of the junior year by contacting the undergraduate advisor.

Students must complete the degree requirements of the College of Arts and Sciences.

Return to Top

Minor in Computer Science

Requirements

Students must complete a minimum of 15 credit hours in the College of Arts and Sciences and/or the School of Informatics to include the following: C211, C212, C241, and either C335 or C343. At least 6 credit hours must be taken on the IU Bloomington campus.

Return to Top

Additional Minors

The Minor in Information Technology and the Minor in Informatics are offered in the School of Informatics. They are approved as outside minors in the College of Arts and Sciences and may be noted on the College student's transcript. For details, please see "Additional Programs" in this bulletin or ask the computer science advisor.

Return to Top

Minor in Business

Students earning a B.A. degree with a major in computer science may obtain a minor in business by successfully completing: Business A200 (or equivalent), L201, CSCI C211, and four of the following five courses: F300, M300, P300, Z302, or G300.

Return to Top

Major in Computer Science—B.S.

This degree program is offered by the School of Informatics. See advisor for details.

Return to Top

Professional Master in Computer Science

This degree program is offered by the School of Informatics. See advisor for details.

Return to Top

Course Descriptions

A110 Introduction to Computers and Computing (3 cr.) N & M P: One year of high school algebra or MATH M014. Basic principles of computers and software. Social and lifestyle effects of information technology. Emphasis on problem-solving techniques. Productivity software skills are taught using real-world projects. Lecture and laboratory. Credit given for only one of A106, A110, or A111.

A111 A Survey of Computers and Computing (1.5 cr.) P: One year of high school algebra or MATH 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, or 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.

A114 Introduction to Databases (1.5 cr.) P: CSCI 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 or A148.

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.

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 cr.) N & M 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.) Exploration for non-majors 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.

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 M118 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 as 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 (4 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.

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.

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.

C102 Great Ideas in Computing (3 cr.) P: None. Survey of great ideas in 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 C: MATH M027 or higher required; MATH M211 recommended. 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 C: MATH M027 or higher required; MATH M211 recommended. 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 or C212.

C241 Discrete Structures for Computer Science (3 cr.) N & M P: C211, and MATH M027 or higher (MATH M211 recommended). 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.) N & M P: H211 or C211. Honors version of C241. Credit given for only one of H241 or C241.

C311 Programming Languages (4 cr.) N & M 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.) N & M P: H335. P or C: H343. Honors version of C311. Credit given for only one of H311 or 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.) N & M 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.

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

C343 Data Structures (4 cr.) N & M 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.) N & M P: H212 or C212. P or C: H241. R: H335. Honors version of C343. Credit given for only one of H343 or C343.

B351 Introduction to Artificial Intelligence and Computer Simulation
(3 cr.) N & M
(COGS Q351) 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 or 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, 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, 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 the 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.) N & M 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.) N & M 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.) N & M 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.) N & M 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.) N & M 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, virtual private networks (VPN), open SSL. Introduction to performance analysis of Web traffic patterns.

B441 Digital Design (4 cr.) N & M 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.

P442 Digital Systems (4 cr.) N & M 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.

B443 Introduction to Computer Architecture (3 cr.) N & M 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. Relationship between computer architecture and system software.

B461 Database Concepts (3 cr.) N & M 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 or B561.

P465-P466 Software Engineering for Information Systems I-II (3-3 cr.) N & M 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.

B481 Interactive Graphics (4 cr.) N & M 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 or 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.300 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 any combination of Y390, Y391, Y398, Y499, C390, and C391. I Sem., II Sem., SS.

Return to Top

 


Indiana University
Office of Creative Services
Von Lee 319
517 East Kirkwood Avenue
Bloomington, IN 47408-4060

Last updated: 25 September 2022 14 37 14

Submit Questions or Comments
Copyright 2022 The Trustees of Indiana University