Computer Science
Faculty
Introduction
Core Courses
Advanced Courses
Mathematical Science Courses
Major in Computer ScienceB.A.
Major in Computer ScienceB.S.
Major Requirements
Departmental Honors Program
B.A. in Computer Science with Honors
B.S. in Computer Science with Honors
Interdepartmental Major in Computer Science and Philosophy
Professional Master in Computer Science
Minor in Computer Science
Minor in Information Technology
Minor in Business
Course Descriptions
Faculty
Chairperson
Professor Dennis Gannon
Director of Undergraduate Education
Associate Professor Christopher Haynes
College Professor
Douglas R. Hofstadter
Oscar R. Ewing Professor
J. Michael Dunn
Professors
R. Kent Dybvig, Daniel P. Friedman, Andrew J. Hanson, Daniel Leivant, Michael McRobbie, Robert F. Port, Paul W. Purdom, Edward L. Robertson, Brian C. Smith, David S. Wise
Professors Emeriti
Franklin Prosser, George Springer, David E. Winkel
Associate Professors
Randall Bramley, Michael Gasser, Steven D. Johnson, David Leake, Jonathan Mills, Gregory J. E. Rawlins, Dirk Van Gucht
Assistant Professors
Yanhong Annie Liu, Scott Stoller
Academic Advising
Dawn M. Smith, Lindley Hall, (812) 855-1502
Return to Top
Introduction
The Department of Computer Science offers B.A. and B.S. degrees, a strong departmental honors program, a professional master's program combining the B.S. and M.S. in five years of study, and undergraduate minors in computer science and in information technology. In addition, the department offers a spectrum of courses (labeled A) for students not majoring in computer science, ranging from the foundational to the practical.
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. The department offers at least once a year an honors version (labeled H) of each core course. For course requirements, each core course is superseded by the corresponding honors course.
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:
- Foundations (middle digit 0 or 1)
- Programming languages (middle digit 2)
- Systems (middle digit 3 or 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, M347, M365, M371, M391, M405, or M409, or Philosophy P251 or P350.
Return to Top
Major in Computer ScienceB.A.
Requirements
Students must complete the following:
- Mathematics M211.
- One foundations course and one mathematical science course, or two mathematical science courses (see "Introduction").
- All six computer science core courses: C211, C212, C241, C311, C335, and C343 or corresponding H versions.
- Two additional advanced computer science courses, at most one of which may be an independent study (Y) course.
Students must complete the degree requirements of the College of Arts and Sciences.
Return to Top
Major in Computer ScienceB.S.
Requirements
Students must complete the following fundamental skills and distribution requirements:
- Writing, same as B.A. degree.
- Foreign language: three semesters in the same language, or equivalent proficiency.
- Arts and Humanities and Social and Historical Studies: total of five courses with at least two courses in each of the two groups.
- Mathematics: M211 (or equivalent proficiency) and at least two mathematical science courses (see "Introduction").
- Natural Sciences: 16 credit hours.
Return to Top
Major Requirements
- All six core courses: C211, C212, C241, C311, C335, and C343 or corresponding H versions.
- Seven advanced computer science courses to include the following:
- a foundations course and the remaining six courses from at least three of the four areas (foundations, programming languages, systems, and applications);
- two "programming-in-the-large" (P) courses.
Students must also complete the requirements and follow the procedures listed under "General Requirements for Bachelor's Degrees."
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:
- Computer science courses must include at least 11 credit hours of honors courses (H courses or Y499).
- Advanced computer science courses must include at least one of the following:
- Y499, leading to an honors thesis.
- A "programming-in-the-large" (P) course.
- 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
B.S. in Computer Science with Honors
Students must satisfy the requirements for the B.S. in Computer Science and the following additional requirements:
- Computer science courses must include at least 11 credit hours of honors courses (H courses or Y499).
- One additional advanced computer science course.
Students must also complete the requirements and follow the procedures listed under "General Requirements for Bachelor's Degrees."
Return to Top
Interdepartmental Major in Computer Science and Philosophy
Requirements
Students must take the following core courses for a total of 42 credit hours.
- Computer Science C211, C212, C311, C335, and C343.
- Philosophy P250.
- Two of Philosophy P251, P350, and P352.
- Two courses distributed between two of the following groups:
Group A: Philosophy P320, P360, P366.
Group B: Philosophy P240, P242, P340, P342.
Group C: Philosophy P310, P312.
Group D: Philosophy P201, P211, P301, P304.
- One philosophy elective.
- Mathematics M211 or M215.
Note: Only one course from the 100 level will count toward the philosophy requirements. Also, a student may not count a 100-level course (e.g. P105, P140, P150) if a more advanced course in the same subject has also been taken. Students in the interdepartmental major may substitute Philosophy P251, P350, or P351 for Computer Science C241 when enrolling in computer science courses that require C241 as a prerequisite. Mathematics M482 may be used in place of P251, P350, or P351.
Given the interdisciplinary nature of the interdepartmental major, the student may petition the computer science or philosophy advisor for modifications to the above requirements to suit individual needs. Students are encouraged to take one of the sequences in computer science or two advanced courses in one area from philosophy or computer science. Because the requirements listed above can also sometimes be used to satisfy general requirements of the College, it is strongly suggested that the student emphasize at least one area.
Return to Top
Professional Master in Computer Science
The Professional Master in Computer Science is designed to enable students to complete a graduate degree in five years. It requires more graduate-level courses than the combined total of the B.S. and M.S., but fewer total credit hours than the sum total of the B.S. and M.S. when taken individually. See the University Graduate School Bulletin for details.
Decisions to admit students to the Professional Master in Computer Science Program are made following the freshman year, at the time of enrollment in the College of Arts and Sciences. Students planning to apply to the program, however, are urged to solicit departmental advising during their freshman year.
For admission to the Professional Master in Computer Science Program, students must have completed at least 26 and not more than 45 credit hours towards a College of Arts and Sciences degree. Students must have earned a GPA of at least 3.0 for computer science courses and an overall GPA of at least 3.0, at the time of admission to the program.
Students in the program are normally classified as undergraduates until the end of the first semester in which 122 or more hours of credit towards graduation have been earned. During this semester, students in good standing, defined as a GPA of at least 3.0 overall and 3.3 in computer science, must submit the standard application to the Graduate School (which includes a processing fee) and initiate the transition to graduate status; if the transition to graduate status is delayed beyond this time, professional master's status will normally revert to undergraduate B.S. status. Students are advised to check on the effect the transition to graduate status may have on existing undergraduate funding; the possibility of graduate funding is conditional upon transition to graduate status. Those not in good standing at this time are dropped from the program and reclassified as undergraduate B.S. students.
Students in the Professional Master in Computer Science Program must complete at least 15 hours of course work while registered in graduate status. Normally, this would encompass no fewer than two semesters.
Students in the program may receive a B.S., optionally with honors (B.S.H.), when they complete the requirements for that degree. Students in the program are encouraged to pursue the B.S.H. Students should be aware that the application for the bachelor's degree must be completed to be eligible for the master's degree, and that the degrees may be taken either sequentially or simultaneously.
Return to Top
Minor in Computer Science
Requirements
Students must complete a minimum of 15 College of Arts and Sciences credit hours to include the following: C211, C212, C241, and either C335 or C343.
Return to Top
Minor in Information Technology
Requirements
Students must complete a minimum of 15 College of Arts and Sciences credit hours to include the following:
- Either A201-A202 or C211-C212;
- A247;
- Either A346 or A348.
A112 is recommended for students without programming background. Computer science majors are not eligible for this minor.
Return to Top
Minor in Business
Students earning a bachelor's 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
Course Descriptions
A110 Introduction to Computers and Computing (3 cr.) NMMC P: one year of high school algebra or MATH 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 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, 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: CSCI 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 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.) NMMC 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.) NMMC P: CSCI 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.
A247 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.
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.
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.
C211 Introduction to Computer Science (4 cr.) NMMC P: two years of high school algebra or MATH M014. 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 and H211. Lecture and laboratory.
H211 Introduction to Computer Science, Honors (4 cr.) NMMC P: two years of high school algebra or MATH M014. Honors version of C211. Credit given for only one of H211 and C211.
C212 Introduction to Software Systems (4 cr.) NMMC 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.) NMMC 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. 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. Honors version of C241. Credit given for only one of H241 and C241.
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.
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.
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.
C343 Data Structures (4 cr.) 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 Structure, 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.) NMMC (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 and 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.) 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.
B438 Fundamentals of Computer Networks (3 cr.) P: P436. Theory and practice of data communication between computing devices. Topics include network architecture and topology, wide-area networks, local-area networks and ISO network layers.
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.
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.
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.
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
|