Computer Science

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 & 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 eight course credits in computer science.

CSCI 201Computer Science Seminar.5
CSCI 203Introduction to Computer Science 11
CSCI 204Data Structures & Algorithms1
CSCI 205Software Engineering and Design1
CSCI 306Computer Systems1
CSCI 311Algorithm Design & Analysis1
CSCI 345Computers and Society1
CSCI 475Senior Design I 4.5
CSCI 476Senior Design II 41
MATH 201Calculus I 21
MATH 202Calculus II 21
MATH 241Discrete Structures 31
STAT 227Statistics and Engineering1
Total Credits12
1

Requirement can be fulfilled with transfer credit for AP Computer Science A. Alternatively, students with programming experience may request placement into CSCI 204 and later substitute this requirement for a CSCI elective.

2

All computer science students are encouraged to pursue a minor in mathematics. Students who have met the requirements for MATH 201 Calculus I and/or MATH 202 Calculus II may want to consider a mathematics minor or a mathematics double major. In addition to the required mathematics courses for the computer science degree, the suggested sequence to complete a mathematics minor is MATH 211 and MATH 343.

3

Any 1.5-credit or 2.0-credit combination of MATH 280 Logic, Sets, and Proofs and MATH 240 Applied Combinatorics or any 1.0-credit Combinatorics & Graph Theory course may replace MATH 241 Discrete Structures (note that some MATH courses have MATH 211 Calculus III as a prerequisite). Students seeking additional depth in mathematics are encouraged to pursue this route as MATH 211 Calculus III and MATH 280 Logic, Sets, and Proofs are prerequisites to several upper-level mathematics courses.

4

Students may substitute CSCI 475 Senior Design I and CSCI 476 Senior Design II with a 1.5 credit senior thesis, honors thesis OR a Culminating Experience. A Culminating Experience is defined as "At least 1.0 credits of 300-level or above coursework, including a significant project."

First Year
First SemesterCreditsSecond SemesterCredits
CSCI 20311CSCI 2041
MATH 20121MATH 20221
CASCC51CASCC51
W1 Elective (FOUN or RESC)61CASCC51
 4 4
Sophomore
First SemesterCreditsSecond SemesterCredits
CSCI 201.5CSCI 2051
STAT 2271MATH 2411
W2 Elective5,61CASCC51
Elective1Elective1
Elective7.5 
 4 4
Junior
First SemesterCreditsSecond SemesterCredits
CSCI 3061CSCI 3111
CSCI 3451CASCC51
CASCC51Elective1
Elective1Elective1
 4 4
Senior
First SemesterCreditsSecond SemesterCredits
CSCI 4754.5CSCI 47641
CASCC51CASCC51
CASCC51Elective1
Elective1Elective1
Elective7.5 
 4 4
Total Credits: 32
5

The College of Arts & Sciences Core Curriculum (CASCC) requirements for the College of Arts & Sciences may be met with a variable number of courses. Once all CASCC requirements are met, the CASCC slots in this schedule may be treated as elective courses.

6

Three courses must fulfill the University's writing requirement, which includes a W1 Elective (FOUN or RESC) taken in the first semester and two subsequent W2 courses. (CSCI 476 will count toward one of the required W2 courses.)

7

Students may elect to substitute a 1.0 credit elective for a total of 4.5 credits in this semester.

Bachelor of Science Major 

The Bachelor of Science in Computer Science requirements are:

CSCI 201Computer Science Seminar.5
CSCI 203Introduction to Computer Science 11
CSCI 204Data Structures & Algorithms1
CSCI 205Software Engineering and Design1
CSCI 306Computer Systems1
CSCI 307Computer Networks and Security.5
CSCI 308Programming Language Design1
CSCI 311Algorithm Design & Analysis1
CSCI 315Operating Systems Design1
CSCI 341Theory of Computation1
CSCI 345Computers and Society1
CSCI 475Senior Design I.5
CSCI 476Senior Design II1
MATH 201Calculus I 21
MATH 202Calculus II 21
STAT 227Statistics and Engineering1
MATH 241Discrete Structures 31
Lab Science Elective 41
Science Elective 41
Total Credits17.5
1

Requirement can be fulfilled with transfer credit for AP Computer Science A. Alternatively, students with programming experience may request placement into CSCI 204 and later substitute this requirement for a CSCI elective.

2

All computer science students are encouraged to pursue a minor in mathematics. Students who have met the requirements for MATH 201 Calculus I and/or MATH 202 Calculus II may want to consider a mathematics minor or a mathematics double major.

3

Any 1.5-credit or 2.0-credit combination of MATH 280 and MATH 240 or any 1.0-credit Combinatorics & Graph Theory course may replace MATH 241 Discrete Structures (note that some MATH courses have MATH 211 as a prerequisite). Students seeking additional depth in mathematics are encouraged to pursue this route as MATH 211 and MATH 280 are prerequisites to several upper-level mathematics courses.

4

Students will choose any two natural science electives. One must have a lab component (LBSC); the other may be any NSMC not in the departments of mathematics or computer science.

Students pursuing a BS in computer science are eligible to pursue a BA in data science as a co-major. Complementing the depth a student receives from their primary major, the BA in Data Science provides breadth across the interdisciplinary field of data science. The major is not intended as – nor can it be declared as – a stand-alone course of study.

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

First Year
First SemesterCreditsSecond SemesterCredits
CSCI 20311CSCI 2041
MATH 20121MATH 20221
W1 Elective (FOUN or RESC)71CASCC61
Elective1Science Elective41
 4 4
Sophomore
First SemesterCreditsSecond SemesterCredits
CSCI 201.5CSCI 2051
Elective5.5MATH 24131
STAT 2271CASCC61
Lab Science Elective41Elective1
W2 Elective71 
 4 4
Junior
First SemesterCreditsSecond SemesterCredits
CSCI 3061CSCI 307.5
CSCI 3411CSCI 3081
CSCI 3451CSCI 3111
CASCC61CASCC61
 Elective5.5
 4 4
Senior
First SemesterCreditsSecond SemesterCredits
CSCI 3151CSCI 47671
CSCI 475.5CASCC61
CASCC61CASCC61
Elective1Elective1
Elective5.5 
 4 4
Total Credits: 32
5

Students may elect to take a 1.0-credit elective for a total of 4.5 credits in the semester.

6

The College of Arts & Sciences Core Curriculum (CASCC) requirements of the College of Arts & Sciences may be met with a variable number of courses. When all CASCC requirements are met, the CASCC slots in this schedule may be treated as elective courses.

7

Three courses must fulfill the University's writing requirement, which includes a W1 Elective (FOUN or RESC) taken in the first semester and two subsequent W2 courses. (CSCI 476 will count toward one of the required W2 courses.)

 

Computer Science Minor

The minor in computer science requires 4.0 credits in CSCI, numbered 2041 and above, including at least 1.0 CSCI credit numbered 300 or above. 

1

CSCI 204 is recommended for all minors, as it is a prerequisite to multiple CSCI courses.

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

  1. Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.
  2. Design, implement and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.
  3. Communicate effectively in a variety of professional contexts.
  4. Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.
  5. Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.
 

Courses

CSCI 187. Creative Computing & Society: Computing, Creativity & the Social Good. 1 Credit.

Offered Both Fall and Spring; Lecture hours:3,Other:2
Introduces computing through creativity and examining social problems, guiding students to create visual artifacts that empower them to draw insights from data, complemented by discussions on computing's societal impact. This course does not count towards the computer science minor. Not open to computer science majors and computer science & engineering majors.

CSCI 1NT. Computer Science Non-traditional Study. .25-2 Credits.

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

CSCI 201. Computer Science Seminar. .5 Credits.

Offered Fall Semester Only,Topics course; Lecture hours:1.5
A variety of Computer Science related topics presented by faculty, alumni, student speakers, and other relevant guests. Presentations and discussions on the frontier of the discipline, professional development, ethics and societal issues, and other topics relevant to the profession. Prerequisite: open to sophomores. Others by permission of the instructor.

CSCI 202. Research Methods. .5 Credits.

Topics course,Offered Spring Semester Only; Lecture hours:1.5
An introduction to research methodology in Computer Science, involving reading scientific literature, developing presentation skills, and learning to use various software packages. Prerequisites: open to first years and sophomores. Others by permission of the instructor.

CSCI 203. Introduction to Computer Science. 1 Credit.

Offered Both Fall and Spring; Lecture hours:3,Lab:2
An introduction to computational problem solving open to all. Students will apply abstraction and decomposition to break problems into manageable pieces and implement their solutions in the Python programming language. Problems will be motivated by a variety of interdisciplinary applications drawn from across the curriculum. Not open to students who have taken ANOP 203 or ECEG 230.

CSCI 204. Data Structures & Algorithms. 1 Credit.

Offered Both Fall and 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 ECEG 230 or permission of the instructor.

CSCI 205. Software Engineering and Design. 1 Credit.

Offered Both Fall and Spring; Lecture hours:3,Lab:2
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 241. Discrete Mathematics. 1 Credit.

Offered Fall Semester Only; Lecture hours:3,Recitation:1
This course introduces the mathematical foundations essential for formalizing computational structures and analyzing algorithmic complexity. Topics include elementary logic, sets, mathematical induction, relations, functions and combinatorics. Prerequisite: CSCI 203. Not open to students who have taken MATH 241.

CSCI 254. Advanced Data Structures & Algorithmic Thinking. 1 Credit.

Offered Spring Semester Only; Lecture hours:3,Lab:2
Students learn to apply abstract reasoning to algorithm design through sophisticated programming exercises using advanced data structures. Topics covered include formal time complexity analysis, proving algorithm correctness (e.g., loop invariants), recursive algorithms, comprehensive coverage of graphs and graph algorithms, hash tables, disjoint-set data structure, heaps and more. Prerequisites: CSCI 204, CSCI 241 or MATH 241 or permission of the instructor.

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

Offered Fall, Spring, Summer,Topics course; Lecture hours:Varies,Other:Varies; Repeatable
Independent study or project in computer science. Prerequisite: permission of the instructor.

CSCI 279. Topics in Computer Science. .5-1 Credits.

Offered Either Fall or Spring,Topics course; Lecture hours:Varies
Current topics of interest. Prerequisite: permission of the instructor.

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

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

CSCI 306. Computer Systems. 1 Credit.

Offered Both Fall and Spring; Lecture hours:3,Lab:2
Fundamental concepts showcasing the integration of hardware and software. Topics include data representation, processor, memory, I/O, Unix system programming in C and assembly, introduction to operating systems, and development tools. Prerequisite: CSCI 204 or permission of the instructor. Not open to students who have taken CSCI 206.

CSCI 307. Computer Networks and Security. .5 Credits.

Offered Spring Semester Only; Lecture hours:2
Introduction to network programming including datagram and virtual circuit protocols. Introduction to topics in computer security such as authentication, integrity, access control, applied cryptography and secure programming. Prerequisite: CSCI 206 or CSCI 306.

CSCI 308. Programming Language Design. 1 Credit.

Offered Both Fall and Spring; 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. Not open to students who have taken CSCI 208.

CSCI 311. Algorithm Design & Analysis. 1 Credit.

Offered Both Fall and Spring; Lecture hours:3,Recitation:1
An introduction to standard patterns and techniques in algorithm design and tools for analyzing algorithmic performance. Students learn to evaluate algorithms, design new algorithmic solutions, and communicate the correctness and usefulness of their solutions. Prerequisite: MATH 241 or (MATH 240 and MATH 280) and CSCI 204.

CSCI 315. Operating Systems Design. 1 Credit.

Offered Both Fall and Spring; Lecture hours:3,Lab:2
Introduction to operating system design including process management, scheduling, memory management, resource allocation, file systems and concurrency. Prerequisite: CSCI 306.

CSCI 320. Computer Architecture. 1 Credit.

Offered Fall Semester Only; Lecture hours:3
Explores two important topics in computer architecture today: memory hierarchy and parallelism in all its forms. Students will use a hardware description language to implement concepts including pipelining, cache and branch prediction. Prerequisite: CSCI 206 or CSCI 306 or ECEG 247 or permission of the instructor. Crosslisted as ECEG 443 and ECEG 643.

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

CSCI 332. The Internet of Things. 1 Credit.

Offered Either Fall or Spring; Lecture hours:3
A broad investigation into the design of internet-connected physical objects and the infrastructure that supports them. This hands-on course covers topics including embedded systems, wireless communication, internet protocols, cloud computing and security. Students will develop their own IoT system. Prerequisite: (CSCI 206 or CSCI 306) or ECEG 247. Crosslisted as ECEG 432 and ECEG 632.

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 345. Computers and Society. 1 Credit.

Offered Both Fall and Spring; Lecture hours:3
Analysis of the impact of computing on society through the application of deontological and consequence-based ethical theories and professional codes of ethics. Students will learn to analyze the impacts of computing on the fundamental values of society so as to be able to create systems that don't oppose social progress.

CSCI 349. Applied Machine Learning. 1 Credit.

Offered Occasionally; Lecture hours:3
Advanced, hands-on course covering the full data science pipeline—from data preparation to model development and visualization—using industry-standard Python tools. Emphasizing supervised learning, foundational unsupervised methods, ethical considerations and responsible AI, students build practical ML skills to solve real-world challenges, including effective communication. Prerequisites: CSCI 311 and (MATH 216 or STAT 216 or MATH 226 or MATH 227 or STAT 227).

CSCI 351. Distributed Computing. 1 Credit.

Offered Occasionally; Lecture hours:3
An introduction to concurrency, communication, and fault-tolerance. Students learn fundamental models of distributed computing and use them to study classic problems and their solutions or impossibility. Examples include consensus, mutual exclusion, distributed data structures and more. We focus primarily on theoretical results, also applying them in practical implementations.

CSCI 357. Artificial Intelligence with Neural Nets. 1 Credit.

Offered Either Fall or Spring; Lecture hours:3
This course immerses students in the hands-on development and adaptation of neural network models in Artificial Intelligence, from classic perceptrons to deep learning and transformer-based systems. Through real-world projects using Python and PyTorch, students directly engage with diverse data modalities while critically examining model interpretation, transparency, fairness, and the societal impact of AI. Prerequisites: CSCI 204 and MATH 245.

CSCI 358. Human Computer Interaction. 1 Credit.

Offered Occasionally; Lecture hours:3
In this interdisciplinary course, we will study research at the intersection of people and computing. Through a variety of prototypes that we'll build (3D user interfaces, visual design, data communication, intelligent user interfaces, etc), we will deliberately practice processes that result in useful, usable and maybe even inspirational computer interfaces.

CSCI 359. Fairness, Privacy, & Transparency When Learning From Data. 1 Credit.

Offered Either Fall or Spring; Lecture hours:3
The course enables students to audit and analyze data-centric systems and processes that are used to make decisions about people’s lives and understand the bias, fairness, privacy, and transparency implications of these systems. We will read, discuss, and implement ideas from recently published research articles in this upcoming area.

CSCI 363. Computer Networks. 1 Credit.

Offered Occasionally; Lecture hours:3
Principles and design of networked computing systems and application programs. Topics include reliable communications medium access control, security, routing, transport, congestion control and networked applications. Prerequisite: CSCI 306 or ECEG 247.

CSCI 365. Image Processing & Analysis. 1 Credit.

Offered Either Fall or Spring; Lecture hours:3,Other:1
This course covers the acquisition, processing and analysis of digital images, covering topics ranging from the human visual system, to image and video compression algorithms, to pattern recognition and machine learning within the context of automatic image understanding. Prerequisites: CSCI 204 and MATH 216 or STAT 216 or MATH 227 or STAT 227.

CSCI 368. Wireless Networks & Applications. 1 Credit.

Offered Either Fall or Spring; Lecture hours:4
This course explores the realm of modern wireless technologies and their practical applications, familiarizing students with the ever-evolving landscape of wireless networks. It equips students with a profound understanding of wireless communication principles, protocols and network architectures, covering fundamental concepts such as radio frequency fundamentals, as well as advanced topics. Crosslisted as ECEG 479 and ECEG 679.

CSCI 375. Teaching Assistant in CSCI. .25-1 Credits.

Offered Both Fall and Spring,Topics course; Lecture hours:Varies,Other:Varies; Repeatable
Teaching assistant to support mastery in a core computer science course. Written learning objectives and assessment policies will be developed with the course instructor. Prerequisites: by permission only.

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

Offered Fall, Spring, Summer,Topics course; 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,Topics course; Lecture hours:Varies; Repeatable
Independent study in computer science. Recent areas include graph algorithms, computer security, distributed computing, graphics, programming languages, software engineering, web information retrieval. Prerequisites: junior standing and permission of the instructor.

CSCI 379. Topics in Computer Science. .25-1 Credits.

Offered Either Fall or Spring,Topics course; Lecture hours:Varies; Repeatable
Current topics of interest.

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

Offered Fall, Spring, Summer,Topics course; 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,Topics course; Lecture hours:1,Other:2
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. Not open to students who have taken ENGR 452.

CSCI 476. Senior Design II. 1 Credit.

Topics course,Offered Spring Semester Only; Lecture hours:2,Other:2
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.

Faculty

Professors: Susan Baish (Teaching), Jessen Havill, Luiz Felipe Perrone

Associate Professors: Alexander Fuchsberger (Teaching), Brian R. King, Alan Marchiori (Chair), Darakhshan Mir, Joshua V. Stough, Edward Talmage, Lea D. Wittie (Associate Chair)

Assistant Professors: Samuel C. Gutekunst, Rajesh Kumar, Sing Chun Lee, Anne Spencer Ross, Todd Schmid

Visiting Assistant Professors: Chris Mitsch, Swetha Reddy Ravula

Laboratory Faculty: Lily Romano