This is an archived copy of the 2016-2017 catalog. To access the most recent version of the catalog, please visit http://coursecatalog.bucknell.edu.

Computer Science (CSCI)

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 lifelong 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 Bachelor of Science in computer science degree program is accredited by the Computing Accreditation Commission of ABET (ABET.org ). Students interested in the computer science major should consult the department concerning the choice of degree program.

Bachelor of Arts Major

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 8 and one-half course credits in Computer Science.

CSCI 203Introduction to Computer Science I1
CSCI 204Introduction to Computer Science II1
CSCI 205Software Engineering and Design1
CSCI 206Computer Organization and Programming1
CSCI 208Programming Language Design 11
CSCI 240Computers and Society 2.5
CSCI 311Algorithms and Data Structures 11
CSCI 315Operating Systems Design1
CSCI 479Computer Science Design Project 3,41
MATH 201Calculus I1
MATH 202Calculus II1
MATH 211Calculus III1
MATH 226Probability and Statistics for Engineers 2.5
MATH 241Discrete Structures 51
Total Credits13
1

 Students may substitute one 300-level elective for either CSCI 208 or CSCI 311.

2

 Half course.

3

Course addresses the writing, presentation, and information literacy requirements of the College Core Curriculum.

4

Serves as the Culminating Experience in computer science.

5

Students, particularly those interested in a mathematics double major, may substitute the 1.5-credit combination of MATH 280 and MATH 240 for MATH 241.

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

First Year
First SemesterCreditsSecond SemesterCredits
CSCI 2031CSCI 2041
MATH 2011MATH 2021
Foundation Seminar1Lab Science1
Elective1CCC61
 4 4
Sophomore
First SemesterCreditsSecond SemesterCredits
CSCI 2051CSCI 2061
MATH 2111MATH 24181
CCC61CCC61
Elective1Elective1
 4 4
Junior
First SemesterCreditsSecond SemesterCredits
CSCI 20871CSCI 240.5
CSCI 3151CSCI 31171
MATH 226.5CCC61
CCC61Elective1
Elective1 
 4.5 3.5
Senior
First SemesterCreditsSecond SemesterCredits
CSCI 4791CCC61
CCC61CCC61
CCC61Elective1
Elective1Elective1
 4 4
Total Credits: 32
6

 Must include courses to satisfy the College Core Curriculum (CCC) requirements of the College of Arts and Sciences.

7

 Bachelor of Arts students may substitute a 300-level computer science elective for either CSCI 208 or CSCI 311 if they desire.

8

Students, particularly those interested in a mathematics double major, may substitute the 1.5-credit combination of MATH 280 and MATH 240 or MATH 241.

Bachelor of Science Major

Requires 11 and one half credits.

CSCI 203Introduction to Computer Science I1
CSCI 204Introduction to Computer Science II1
CSCI 205Software Engineering and Design1
CSCI 206Computer Organization and Programming1
CSCI 208Programming Language Design1
CSCI 240Computers and Society 7.5
CSCI 311Algorithms and Data Structures1
CSCI 315Operating Systems Design1
CSCI 341Theory of Computation1
CSCI 479Computer Science Design Project 8,91
Two 300-level or above computer science electives 92
MATH 201Calculus I1
MATH 202Calculus II1
MATH 211Calculus III1
MATH 226Probability and Statistics for Engineers 7.5
MATH 241Discrete Structures 101
PHYS 211Classical and Modern Physics I1
PHYS 212Classical and Modern Physics II1
PHYS 235Applied Electronics1
Science course1
Total Credits20
7

Half course.

8

Serves as a Culminating Experience in computer science.

9

At most one credit for any combination of CSCI 376 Computer Science Honors Thesis and CSCI 378 Individual Study in Computer Science may count toward this requirement.

10

 Students, particularly those interested in a mathematics double major, may substitute the 1.5-credit combination of MATH 280 and MATH 240 for MATH 241.

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

First Year
First SemesterCreditsSecond SemesterCredits
CSCI 2031CSCI 2041
MATH 2011MATH 2021
Foundation Seminar1Lab Science1
Elective1CCC121
 4 4
Sophomore
First SemesterCreditsSecond SemesterCredits
CSCI 2051CSCI 2061
MATH 2111MATH 241151
PHYS 2111PHYS 2121
CCC121CCC121
 4 4
Junior
First SemesterCreditsSecond SemesterCredits
CSCI 2081CSCI 24011.5
CSCI 3151CSCI 3111
MATH 22611.5PHYS 2351
CCC121Computer Science Elective141
 CCC121
 3.5 4.5
Senior
First SemesterCreditsSecond SemesterCredits
CSCI 3411Computer Science Elective141
CSCI 479131CCC121
CCC121CCC121
CCC121Elective1
 4 4
Total Credits: 32
11

Half course.

12

Must include courses to satisfy the College Core Curriculum (CCC) requirements of the College of Arts and Sciences.

13

Serves as a Culminating Experience in computer science.

14

At most one credit for any CSCI 376 Computer Science Honors Thesis and CSCI 378 Individual Study in Computer Science may count toward this requirement.

15

Students, particularly those interested in a mathematics double major, may substitute the 1.5-credit combination of MATH 280 and MATH 240 for MATH 241.

Computer Science Minor

The minor in computer science requires five computer science courses.

If a student’s first computer science course is CSCI 203 Introduction to Computer Science I, then the four additional courses are:

CSCI 204Introduction to Computer Science II1
CSCI 206Computer Organization and Programming1
Select two of the following:2
Software Engineering and Design
Programming Language Design
300 and 400-level computer science courses

 If a student’s first computer science course is a 100-level then the four additional courses are:

CSCI 203Introduction to Computer Science I1
CSCI 204Introduction to Computer Science II1
CSCI 206Computer Organization and Programming1
Select one of the following:1
Software Engineering and Design
Programming Language Design
300 and 400-level computer science courses

Graduates of the program are expected to demonstrate the following learning outcomes, which reflect ABET computing accreditation criteria:
 

C-a. An ability to apply knowledge of computing and mathematics appropriate to the program's student's outcomes and to the discipline.

C-b. An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.

C-c. An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs.

C-d. An ability to function effectively on teams to accomplish a common goal.

C-e. An understanding of professional, ethical, legal, security and social issues and responsibilities.

C-f. An ability to communicate effectively with a range of audiences.

C-g. An ability to analyze the local and global impact of computing on individuals, organizations, and society.

C-h. Recognition of the need for and an ability to engage in continuing professional development.

C-i. An ability to use current techniques, skills, and tools necessary for computing practice.

C-j. An ability to apply mathematical foundations, algorithmic principles, and computer science theory at the modeling, and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices.

C-k. An ability to apply design and development principles in the construction of software systems of varying complexity.

Courses

CSCI 1NT. Computer Science Non-traditional Study. .5 Credits.

Offered Fall, Spring, Summer; Lecture hours:Varies
Non-traditional study in computer science. Prerequisite: permission of the instructor.

CSCI 203. Introduction to Computer Science I. 1 Credit.

Offered Either Fall or Spring; Lecture hours:3,Lab: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.

CSCI 204. Introduction to Computer Science II. 1 Credit.

Offered Either Fall or Spring; Lecture hours:3,Lab:2
Introduction to data structures and algorithms using an object-oriented approach. Topics include software-engineering principles, object-oriented programming, recursion, basic data structures, algorithm analysis, and team programming. Prerequisite: CSCI 203 or permission of the instructor. Corequisite: MATH 201 or equivalent.

CSCI 205. Software Engineering and Design. 1 Credit.

Offered Either Fall or Spring; Lecture hours:3
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.

CSCI 206. Computer Organization and Programming. 1 Credit.

Offered Spring Semester Only; Lecture hours:3,Lab:3
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.

CSCI 208. Programming Language Design. 1 Credit.

Offered Fall Semester Only; Lecture hours:3,Lab: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 205 or permission of the instructor.

CSCI 240. Computers and Society. .5 Credits.

Offered Spring Semester Only; Lecture hours:2
The place of computers in society. In-depth study of societal, ethical, and legal issues related to computing. Historical and futurists' views of computing and technology. Public perceptions of computing and the role of computer scientists as professionals. Course work includes oral and written presentations. Prerequisite: junior or senior standing.

CSCI 245. Life, Computers, and Everything. 1 Credit.

Offered Spring Semester Only; Lecture hours:3,Other:2
This course explores how computing technologies fit into modern life and provides opportunities for critical analysis of their societal impacts. Past, current, and future developments in computing are studied from ethical and legal perspectives. Course activities includes discussions, oral presentations, and written work. Fulfills CSCI 240 requirement for CS majors.

CSCI 278. Computer Science Individual Study. .5-1 Credits.

Offered Fall, Spring, Summer; Lecture hours:Varies,Other:Varies; Repeatable
Independent study or project in computer science. Prerequisite: one of the following: CSCI 185, CSCI 203, CSCI 204, CSCI 205, CSCI 206, CSCI 208, CSCI 240, or permission of the instructor.

CSCI 2NT. Computer Science Non-traditional Study. .5-2 Credits.

Offered Fall, Spring, Summer; Lecture hours:Varies
Non-traditional study in computer science. Prerequisite: permission of the instructor.

CSCI 305. Introduction to Database. 1 Credit.

Offered Occasionally; Lecture hours:3
Relational database design methodologies, evaluation techniques, programming, and query languages. Introduction to database systems design, performance, and object-oriented databases. Prerequisites: CSCI 204 and junior or senior standing.

CSCI 311. Algorithms and Data Structures. 1 Credit.

Offered Spring Semester Only; Lecture hours:3,Recitation:1
Introduction to the algorithms and data structures used in implementing abstract data types including priority queues, dictionaries, and graphs. Includes complexity analysis of various implementations. Prerequisites: MATH 241 and CSCI 205 or permission of the instructor.

CSCI 315. Operating Systems Design. 1 Credit.

Offered Fall Semester Only; Lecture hours:3,Lab:2
Introduction to operating system design including processor management, scheduling, memory management, resource allocation, file systems, and concurrency. Prerequisite: CSCI 206.

CSCI 320. Computer Architecture. 1 Credit.

Offered Fall Semester Only; Lecture hours:3,Lab:2
Use hardware description language to describe and design digital systems. Processor design, pipelining, cache and storage systems. Instruction and thread level parallelism, speculation, branch prediction. Prerequisite: CSCI 315 or permission of the instructor.

CSCI 321. Mobile Systems Development. 1 Credit.

Offered Occasionally; Lecture hours:3
Covers the software design and development process of a mobile applications developer. The course uses smartphones and tablets as the programming platform. Prerequisite: CSCI 205.

CSCI 331. Compiler Optimization. 1 Credit.

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

CSCI 335. Web Information Retrieval. 1 Credit.

Offered Occasionally; Lecture hours:3
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.

CSCI 341. Theory of Computation. 1 Credit.

Offered Fall Semester Only; Lecture hours:3,Recitation:1
Finite automata, regular sets, pushdown automata, context-free grammars. Turing machines, recursive functions and undecidability. Prerequisite: MATH 241 or MATH 280.

CSCI 349. Introduction to Data Mining. 1 Credit.

Offered Occasionally; Lecture hours:3
Data preprocessing, statistical modeling, basic machine learning algorithms for mining large datasets. Topics include association analysis, frequent pattern mining, classification, and clustering. Prerequisites: CSCI 311 and MATH 226.

CSCI 350. Introduction to Analysis of Algorithm. 1 Credit.

Offered Occasionally; Lecture hours:3
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.

CSCI 362. Computer and Network Security. 1 Credit.

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

CSCI 363. Computer Networks. 1 Credit.

Offered Occasionally; Lecture hours:3,Lab:2
Principles and design of networked computing systems and application programs. Topics include reliable communications medium access control, routing, transport, congestion control and networked applications. Prerequisite: CSCI 315.

CSCI 367. Computer Graphics. 1 Credit.

Offered Occasionally; Lecture hours:3,Lab: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.

CSCI 376. Computer Science Honors Thesis. .5-1 Credits.

Offered Fall, Spring, Summer; Lecture hours:Varies; Repeatable
Independent work on computer science honors thesis. Prerequisite: permission of the instructor.

CSCI 378. Individual Study in Computer Science. .5-1 Credits.

Offered Fall, Spring, Summer; Lecture hours:Varies; Repeatable
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.

CSCI 379. Topics in Computer Science. 1 Credit.

Offered Either Fall or Spring; Lecture hours:3; Repeatable
Current topics of interest. Course may/may not require laboratory depending upon the topic. Prerequisite: permission of the instructor.

CSCI 3NT. Computer Science Non-traditional Study. .5-4 Credits.

Offered Fall, Spring, Summer; Lecture hours:Varies,Other:3
Non-traditional study course in computer science. Prerequisite: permission of the instructor.

CSCI 475. Senior Design I. .5 Credits.

Offered Fall Semester Only; Lecture hours:Varies,Other:2; Repeatable
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.

CSCI 476. Senior Design II. 1 Credit.

Offered Spring Semester Only; Lecture hours:1.5
Students undertake several cycles of delivery, each including a design document, product implementation, testing, and feedback. Students produce technical and user’s manuals for the final version. Class presentations of designs and implementations. Includes public presentation of the final product and design process. Prerequisites: CSCI 475 and permission of the instructor.

CSCI 479. Computer Science Design Project. 1 Credit.

Offered Fall Semester Only; Lecture hours:3
Students in teams use software engineering methodology to design and implement a semester-long project. Written reports and oral presentations are required. Prerequisites: CSCI 205 and senior standing in the College of Arts and Sciences and permission of the instructor.

Faculty

Professors: Xiannong Meng, Luiz Felipe Perrone

Associate Professors: Stephen M. Guattery (Chair), Brian R. King, Lea D. Wittie

Assistant Professors: Christopher L. Dancy II, Alan Marchiori, Darakhshan Mir, Evan M. Peck, Benoit Razet, Joshua V. Stough

Visiting Assistant Professor: Joshua Dennis Booth