IU Bulletins HomeBloomington Campusred
Indiana University

Search College of Arts and Sciences 2006-2008 Online Bulletin

Request College of Arts and Sciences 2006-2008 Application Packet

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

 

Return to College of Arts and Sciences Departments and Programs
 

College of Arts
and Sciences (College)
2006-2008
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 Education

Professor Andrew Lumsdaine

College Professor

Douglas R. Hofstadter

Oscar R. Ewing Professor

J. Michael Dunn

Professors

Randall Bramley, R. Kent Dybvig, Geoffrey Fox, Daniel P. Friedman, Dennis Gannon, Steven D. Johnson, David Leake, Daniel Leivant, Michael McRobbie, Paul W. Purdom, Edward L. Robertson, Dirk Van Gucht, David S. Wise

Professors Emeriti

Stan Hagstrom, Franklin Prosser, George Springer, David E. Winkel

Associate Professors

Geoffrey Brown, Michael Gasser, Christopher Haynes, Filippo Menczer, Jonathan Mills, Beth Plale, Gregory J. E. Rawlins, Amr Sabry

Assistant Professors

Kay Connelly, Florin Cutu, Minaxi Gupta, Raquel Hill, Catharine Wyss

Academic Advising

Laura Hopkins, Lindley Hall 225, (812) 855-1502

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. In addition, the department offers a spectrum of courses (labeled A) for students not majoring in computer science.

Return to Top

Core Courses

The six core courses of the computer science undergraduate curriculum (labeled C) provide a solid general foundation in computer science. These are C211, C212, C241, C311, C335, and C343. Honors versions (labeled H) of each core course are available in selected semesters.

Return to Top

Advanced Courses

Computer science courses numbered 300 level or higher and of at least 3 credit hours, excluding Y398 and A courses, are considered "advanced computer science courses."

Most of the department's courses at the 400 level and above are classified into four areas:

  1. Foundations (middle digit 0 or 1)
  2. Programming languages (middle digit 2)
  3. Systems (middle digit 3 or 4)
  4. Applications (middle digit 5, 6, 7, or 8)

A middle digit 9 indicates a general course. Courses with a major "programming-in-the-large" component are labeled P. Independent study courses are labeled Y. The remaining computer science major courses are labeled B.

Mathematics M471-M472 may be applied to the computer science major as 400-level "applications" courses. Mathematics M471-M472 may not be treated as "programming-in-the-large" courses.

Return to Top

Mathematical Science Courses

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

Return to Top

Major in Computer Science-B.A.

Requirements

Students must complete the following:

  1. Mathematics M211.
  2. One foundations course and one mathematical science course, or two mathematical science courses.
  3. All six computer science core courses: C211, C212, C241, C311, C335, and C343 or corresponding H versions.
  4. Two additional advanced computer science courses, at least one of which must be at the 400 level and may not be an independent study (Y) course.

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

Return to Top

Departmental Honors Program

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.

Computer science majors with a minimum grade point average of 3.3 in computer science courses as well as a minimum overall grade point average of 3.3 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.

Return to Top

B.A. in Computer Science with Honors

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).

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.

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), F300, L201, M300, P300, Z302 and CSCI C211 (computer science majors may substitute CSCI C211 for BUS K201 requirement).

Return to Top

Major in Computer Science-B.S.

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

Return to Top

Professional Master in Computer Science

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

Return to Top

Minor in Information Technology

This minor is in 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. No credit toward a major in computer science.

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.

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 M118 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 M118 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 M118 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.

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.

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.

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: 18 April 2024 03 45 23

Submit Questions or Comments
Copyright 2024 The Trustees of Indiana University