Professors: Maurice F. Aburdene, Gary Haggard, Xiannong Meng

Associate Professors: Stephen M. Guattery (Chair), Daniel C. Hyde, Luiz Felipe Perrone, Lea Wittie, Richard J. Zaccone

Assistant Professors: Brian R. King, Anastasia Kurdia (visiting), Benoit Razet

The undergraduate programs in computer science stress fundamental principles of computational thinking, including solid theoretical underpinnings, computational methods and models for solving problems, principles for designing computing systems to meet human needs, and techniques for analyzing the effectiveness of these methods, models, and systems. They provide students with the conceptual foundation needed to stay at the front of this fast-changing field. For most courses, classroom learning is enhanced through significant faculty-directed hands-on experience, typically in the form of a regularly scheduled laboratory.

Graduates typically take entry-level positions in hardware and software systems application and design or continue their education at the graduate level.

Program Educational Objectives for the Bachelor of Science Degree

Computer Science degree graduates will be successful professionals in computer science or other fields, and will be recognized for qualities associated with their Bucknell education. Such qualities include critical thinking, problem solving, and effective communication. Graduates will be prepared to pursue life-long learning such as professional or advanced education.

A computer science major may be pursued under any one of three degree programs: Bachelor of Arts, Bachelor of Science, and Bachelor of Science in computer science and engineering (see College of Engineering). The department also offers a Bachelor of Science in computer engineering degree jointly with the electrical engineering department (see College of Engineering). The Bachelor of Science in computer science degree program is accredited by the Computing Accreditation Commission of ABET. Students interested in the computer science major should consult the department concerning the choice of degree program.

The Bachelor of Arts major curriculum provides the student with an opportunity to combine the liberal arts tradition with strong preparation in computer science. It requires eight and one-half course credits in computer science: CSCI 203, CSCI 204, CSCI 205, CSCI 206, CSCI 208, CSCI 240, CSCI 311, CSCI 315, CSCI 479. Students may substitute one 300-level elective for either CSCI 208 or CSCI 311. In addition, the following mathematics courses are required: MATH 201, MATH 202, MATH 211, MATH 226, and MATH 241. (CSCI 240 and MATH 226 are half courses.)

The Bachelor of Science major curriculum requires 11.5 course credits in computer science: CSCI 203, CSCI 204, CSCI 205, CSCI 206, CSCI 208, CSCI 240, CSCI 311, CSCI 315, CSCI 341, and CSCI 479 and two computer science electives at the 300-level or above. At most one credit for any combination of CSCI 376 and CSCI 378 may count toward this requirement. In addition, the following courses are required: MATH 201, MATH 202, MATH 211, MATH 226, and MATH 241; PHYS 211, PHYS 212, and PHYS 235; and one additional science course. (CSCI 240 and MATH 226 are half courses.)

Both of these programs require CSCI 240 and CSCI 479, which address the writing, presentation, and information literacy requirements of the College Core Curriculum. CSCI 479 additionally serves as a Culminating Experience in computer science.

The recommended sequence for the Bachelor of Science major is as follows:

First Year

First Semester: CSCI 203; MATH 201
Second Semester: CSCI 204; MATH 202

Sophomore Year

First Semester: CSCI 205; MATH 211; PHYS 211
Second Semester: CSCI 206; MATH 241; PHYS 212

Junior Year

First Semester: CSCI 208, CSCI 315; MATH 226*
Second Semester: CSCI 240*; CSCI 311; PHYS 235; One elective in computer science

Senior Year

First Semester: CSCI 341; CSCI 479
Second Semester: One elective in computer science

* Half course, all others are one-credit courses

The minor in computer science requires five computer science courses. If a student's first computer science course is CSCI 203, then the four additional courses are CSCI 204, CSCI 206, and two additional courses chosen from CSCI 205; CSCI 208 and the 300- and 400-level computer science courses. If a student's first computer science course is CSCI 180, CSCI 185, or CSCI 202 then the four additional courses are CSCI 203, CSCI 204, CSCI 206, and one additional course chosen from CSCI 205, CSCI 208 and the 300- and 400-level offerings.



Computing and Interpreting Computations (I and II; 3, 1)

Course includes a study of the history of computation. Instruction in programming in BASIC and Excel provides tools for solving problems. Working in small groups, students write short reports describing solutions of case studies.


Computing for Scientists (I or II; 3, 2)

An introduction to solving scientific problems with computation using both programming and packaged analysis tools. Examples are drawn from the sciences. Prerequisite: MATH 201. Not open to computer science majors or students who have taken CSCI 203.


Introduction to Computer Science I (I or II; 3, 2)

Overview of computing that explores relationships between computer organization, various programming approaches, limits to computing, and computing in society. Students solve computational problems using Python.


Introduction to Computer Science II (I or II; 3, 2)

Introduction to data structures and algorithms using an object-oriented approach. Topics include software-engineering principles, object-oriented programming, recursion, basic data structure, algorithm analysis, and team programming. Prerequisite: CSCI 203 or permission of the instructor. Corequisite: MATH 201 or equivalent.


Software Engineering and Design (I or II; 3, 0)

Fundamentals of software design and software engineering. Students will participate in large-scale, team-based software development project. Prerequisite: CSCI 204 or permission of the instructor.


Computer Organization and Programming (I or II; 3, 2)

Concepts of software and hardware. Software: instruction set design, assembly language and assemblers. Hardware: processor organization, memory hierarchy, interfacing processors and I/O devices. Prerequisite: CSCI 204 or permission of the instructor.


Programming Language Design (I or II; 3, 2)

Study of modern programming language paradigms (procedural, functional, logic, object-oriented). Introduction to the design and implementation of programming languages including syntax, semantics, data types and structures, control structures, run-time environments. Prerequisite: CSCI 204.


Computers and Society (II; 2, 0) Half to full course.

The place of the computer in modern society. An in-depth study of the societal, ethical, and legal issues of computing. Historical as well as futurists' views of computing and technology. Public perception of computers and computer scientists and how that influences the role of the computer scientist as a professional. Course work includes oral and written presentations. Prerequisite: junior or senior standing.


Computer Science Individual Study (I, II, or S; R; 0, 6) Half to full course.

Independent study or project in computer science. Prerequisite: one of the following: CSCI 185, 202, 203, 204, 205, 206, 208, 240, or permission of the instructor.


Introduction to Database (I or II; 3, 0)

Relational database design methodologies, evaluation techniques, programming, and query languages. Introduction to database systems design, performance, and object-oriented databases. Prerequisites: junior or senior standing and CSCI 206.


Algorithms and Data Structures (I; 3, 1)

Introduction to the algorithms and data structures used in implementing abstract data types including priority queues, dictionaries, and graphs. Includes complexity and analysis of various implementations. Prerequisites: MATH 241 and CSCI 205 or permission of the instructor.


Operating Systems Design (II; 3, 2)

Introduction to operating system design including processor management, scheduling, memory management, resource allocation, file systems, and concurrency. Prerequisite: CSCI 206.


Computer Architecture (I; 3, 2)

Use hardware description language to describe and design systems. Processor design, pipelining, cache and storage systems. Instruction and thread level parallelism, speculation, branch prediction. Prerequisite: CSCI 206 or permission of the instructor.


Compiler Optimization (II; 3, 0)

Project -based introduction to compiler optimization for theoretical and practical issues such as run-time, memory usage, code robustness, and security. Prerequisite: CSCI 208.


Graphs, Their Algorithms, and Software Engineering (I or II; 3, 0)

An introduction to graph theory including: degree sequence, paths, cycles, trees, directed graphs, and graph polynomials. Group projects on visualization of algorithms using a modern software engineering methodology. Prerequisite: CSCI 205.


Web Information Retrieval (I or II; 3, 0)

Introduction to information retrieval. Topics include retrieval models, evaluations, text properties, indexing, query operations, user interfaces, and web search. Prerequisites: CSCI 206 and junior standing.


Theory of Computation I (I; 3, 1)

Finite automata, regular sets, pushdown automata, context-free grammars. Turing machines, recursive functions and undecidability. Prerequisite: MATH 241 or MATH 280.


Introduction to Analysis of Algorithms (I or II; 3, 0)

Selected topics in algorithm design, analysis, and application. Possible topics include network flows, graphs, string processing, randomized algorithms, parallel algorithms, optimization, and NP-completeness. Prerequisite: CSCI 311.


Computer and Network Security (II; 3, 0)

Fundamental principles of computer and network security. Topics include cryptology, privacy, secure programming, authentication, assurance, intrusion detection, and practical experience on networked Linux computers. Concurrent prerequisite: must have already taken or currently taking CSCI 315.


Computer Networks (AII; 3, 2)

Principles and design of networked computing systems and application programs. Topics include reliable communications, medium access control, routing, congestion control, and networked applications. Prerequisite: CSCI 315.


Computer Graphics (II; 3, 2)

Topics in graphics hardware and software. Input devices and output displays and graphics processor architecture. Application packages, general purpose graphics packages, and algorithms. Use of color and software for two- and three-dimensional graphics. Prerequisites: junior or senior standing; CSCI 204 or permission of the instructor.


Computer Science Honors Thesis (I and II and S; R) Half to full course.

Independent work on computer science honors thesis. Prerequisite: permission of the instructor.


Individual Study in Computer Science (I or II or S; R) Half to full course.

Independent study in computer science. Recent areas include graph algorithms, computer security, distributed computing, graphics, programming languages, software engineering, web retrieval. Prerequisites: junior standing and permission of the instructor.


Topics in Computer Science (I or II; R; 3, 0)

Current topics of interest. Course may or may not require laboratory depending upon the topic. Prerequisite: permission of the instructor.


Senior Design I (I; 2, 0) Half course.

A recognized software engineering methodology will be used with all phases of a senior design project. Written work will include a technical report about the project, a feasibility report, and a requirements specification document. Prerequisite: permission of the instructor.


Senior Design II (II; 1.5, 0)

Students will undertake several cycles of delivery, including (for each cycle), a design document, an implementation of the product, testing, and feedback. Students will produce a technical manual and a user's manual for the final version. Class presentations of the design versions and implementations will be given to obtain feedback. There will be a public presentation of the final product and design process. Prerequisite: CSCI 475.


Computer Science Design Project (I or II; 3, 0)

Students in teams use software engineering methodology to design and implement a semester-long project. Written reports and presentations are required. Prerequisites: CSCI 205 and senior standing in the College of Arts and Sciences.


Places I've Been

The following links are virtual breadcrumbs marking the 27 most recent pages you have visited in If you want to remember a specific page forever click the pin in the top right corner and we will be sure not to replace it. Close this message.