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 & 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 and one-half course credits in Computer Science.
CSCI 203 | Introduction to Computer Science | 1 |
CSCI 204 | Data Structures & Algorithms | 1 |
CSCI 205 | Software Engineering and Design | 1 |
CSCI 206 | Computer Organization | 1 |
CSCI 240 | Computers and Society 2 | .5 |
CSCI 308 | Programming Language Design | 1 |
CSCI 311 | Design & Analysis of Algorithms 1 | 1 |
CSCI 315 | Operating Systems Design | 1 |
CSCI 479 | Computer Science Design Project 3,4 | 1 |
MATH 201 | Calculus I | 1 |
MATH 202 | Calculus II | 1 |
MATH 227 | Statistics and Engineering | 1 |
MATH 241 | Discrete Structures 5 | 1 |
Total Credits | 12.5 |
1 | Students may substitute one 300-level elective for either CSCI 308 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 who place out of MATH 201 and/or MATH 202 may want to consider a mathematics double major. Students pursuing this double major may substitute the 1.5-credit combination of MATH 280 and MATH 240 for MATH 241. |
Students may want to consider CSCI 201 Computer Science Seminar or CSCI 202 Research Methods to fulfill the 0.5 (half credit) elective requirement.
The recommended sequence for the Bachelor of Arts major is as follows:
First Year | |||
---|---|---|---|
First Semester | Credits | Second Semester | Credits |
CSCI 203 | 1 | CSCI 204 | 1 |
MATH 201 | 1 | MATH 202 | 1 |
Foundation Seminar | 1 | Lab Science | 1 |
Elective | 1 | CCC6 | 1 |
4 | 4 | ||
Sophomore | |||
First Semester | Credits | Second Semester | Credits |
CSCI 205 | 1 | CSCI 206 | 1 |
MATH 227 | 1 | MATH 2418 | 1 |
CCC6 | 1 | CCC6 | 1 |
Elective | 1 | CCC6 | 1 |
Elective | .5 | ||
4.5 | 4 | ||
Junior | |||
First Semester | Credits | Second Semester | Credits |
CSCI 315 | 1 | CSCI 240 | .5 |
CSCI 3117 | 1 | CSCI 308 | 1 |
CCC6 | 1 | CCC6 | 1 |
Elective | 1 | Elective | 1 |
4 | 3.5 | ||
Senior | |||
First Semester | Credits | Second Semester | Credits |
CSCI 479 | 1 | CCC6 | 1 |
CCC6 | 1 | CCC6 | 1 |
CCC6 | 1 | Elective | 1 |
Elective | 1 | Elective | 1 |
4 | 4 | ||
Total Credits: 32 |
6 | Must include courses to satisfy the College Core Curriculum (CCC) requirements of the College of Arts & Sciences. |
7 | Bachelor of Arts students may substitute a 300-level computer science elective for either CSCI 308 or CSCI 311 if they desire. |
8 | Students who placed out of MATH 201and/or MATH 202 may want to consider a mathematics double major. Students pursuing this double major may substitute the 1.5-credit combination of MATH 280 and MATH 240 for MATH 241. |
Bachelor of Science Major
Requires 11 and one half credits in CSCI courses.
CSCI 203 | Introduction to Computer Science | 1 |
CSCI 204 | Data Structures & Algorithms | 1 |
CSCI 205 | Software Engineering and Design | 1 |
CSCI 206 | Computer Organization | 1 |
CSCI 240 | Computers and Society 9 | .5 |
CSCI 308 | Programming Language Design | 1 |
CSCI 311 | Design & Analysis of Algorithms | 1 |
CSCI 315 | Operating Systems Design | 1 |
CSCI 341 | Theory of Computation | 1 |
CSCI 479 | Computer Science Design Project 10 | 1 |
Two 300-level or above computer science electives 11 | 2 | |
MATH 201 | Calculus I | 1 |
MATH 202 | Calculus II | 1 |
MATH 241 | Discrete Structures 12 | 1 |
MATH 227 | Statistics and Engineering | 1 |
PHYS 211 | Classical and Modern Physics I | 1 |
PHYS 212 | Classical and Modern Physics II | 1 |
PHYS 235 | Applied Electronics | 1 |
Science course | 1 | |
Total Credits | 19.5 |
9 | Half course. |
10 | Serves as a Culminating Experience in computer science. |
11 | 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. |
12 | Students who placed out of MATH 201 and/or MATH 202 may want to consider a Mathematics double major. Students pursuing this double major may substitute the 1.5-credit combination of MATH 280 and MATH 240 for MATH 241. |
Students may want to consider CSCI 201 Computer Science Seminar or CSCI 202 Research Methods to fulfill the 0.5 (half credit) elective requirement.
The recommended sequence for the Bachelor of Science major is as follows:
First Year | |||
---|---|---|---|
First Semester | Credits | Second Semester | Credits |
CSCI 203 | 1 | CSCI 204 | 1 |
MATH 201 | 1 | MATH 202 | 1 |
Foundation Seminar | 1 | Additional Science Course | 1 |
Elective | 1 | CCC14 | 1 |
4 | 4 | ||
Sophomore | |||
First Semester | Credits | Second Semester | Credits |
CSCI 205 | 1 | CSCI 206 | 1 |
PHYS 211 | 1 | MATH 24117 | 1 |
MATH 227 | 1 | PHYS 212 | 1 |
CCC14 | 1 | CCC14 | 1 |
Elective | .5 | ||
4.5 | 4 | ||
Junior | |||
First Semester | Credits | Second Semester | Credits |
CSCI 315 | 1 | CSCI 24013 | .5 |
CSCI 311 | 1 | CSCI 308 | 1 |
CCC14 | 1 | PHYS 235 | 1 |
Elective | 1 | Computer Science Elective16 | 1 |
4 | 3.5 | ||
Senior | |||
First Semester | Credits | Second Semester | Credits |
CSCI 341 | 1 | Computer Science Elective16 | 1 |
CSCI 47915 | 1 | CCC14 | 1 |
CCC14 | 1 | CCC14 | 1 |
CCC14 | 1 | Elective | 1 |
4 | 4 | ||
Total Credits: 32 |
13 | Half course. |
14 | Must include courses to satisfy the College Core Curriculum (CCC) requirements of the College of Arts & Sciences. |
15 | Serves as a Culminating Experience in computer science. |
16 | 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. |
17 | Students who place out of MATH 201 and/or MATH 202 may want to consider a Mathematics double major. Students pursuing this 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, then the four additional courses are:
CSCI 204 | Data Structures & Algorithms | 1 |
Select three of the following: | 3 | |
Software Engineering and Design | ||
Computer Organization | ||
Programming Language Design | ||
300 and 400-level computer science courses |
At least one credit must be at the 300 level or above. At most, one credit for CSCI 378 Individual Study in Computer Science may count toward this requirement.
If a student’s first computer science course is a 100 level course, then the four additional courses are:
CSCI 203 | Introduction to Computer Science | 1 |
CSCI 204 | Data Structures & Algorithms | 1 |
Select two of the following: | 2 | |
Software Engineering and Design | ||
Computer Organization | ||
Programming Language Design | ||
300 and 400-level computer science courses |
At least one credit must be at the 300 level or above. At most, one credit for CSCI 378 Individual Study in Computer Science may count toward this requirement.
Graduates of the program are expected to demonstrate the following learning outcomes, which reflect ABET computing accreditation criteria:
- Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.
- Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.
- Communicate effectively in a variety of professional contexts.
- Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.
- Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.
Courses
CSCI 187. Creative Computing and Society: Computing, Creativity, and the Social Good. 1 Credit.
Offered Both Fall and Spring; Lecture hours:3,Other:2
Introduces computing in the context of creativity and examining problems of social good. Students will create visual artifacts that will empower them to investigate, and draw novel insights from, data that may be social, historical, or textual in nature. Supplemented with discussions on computing's impact on society.
CSCI 1NT. Computer Science Non-traditional Study. .25-2 Credits.
Offered Fall, Spring, Summer; 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; 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.
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 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. Not open to students who have taken ANOP 203.
CSCI 204. Data Structures & Algorithms. 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 (BCEN students ECEG 247) 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. 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 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 202, CSCI 203, CSCI 204, CSCI 205, CSCI 206, CSCI 240, CSCI 308, or permission of the instructor.
CSCI 2NT. Computer Science Non-traditional Study. .25-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 308. Programming Language Design. 1 Credit.
Offered Spring 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. Not open to students who have taken CSCI 208.
CSCI 311. Design & Analysis of Algorithms. 1 Credit.
Offered Fall 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 or (MATH 240 and MATH 280) 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 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 340. Mobile Computing. 1 Credit.
Offered Either Fall or Spring; Lecture hours:4
Mobile computing ecosystem including apps, devices, wireless networks, and back-end systems. Includes at least one major project; the specific course content will vary based on projects, student interest, and current technology trends. This course typically includes a considerable amount of software development. Prerequisite: CSCI 205 or permission of instructor. Crosslisted as ECEG 430.
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 216 or MATH 226.
CSCI 357. AI & Cognitive Science. 1 Credit.
Offered Either Fall or Spring; Lecture hours:3
Theories and methods in artificial intelligence and cognitive science. Topics will be a mix of historically important and foundational perspectives, including statistical (e.g., connectionist), and symbolic frameworks. Prerequisites: CSCI 204, open to juniors and seniors or permission of the instructor.
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,Other:2
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,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 365. Image Processing & Analysis. 1 Credit.
Offered Either Fall or Spring; Lecture hours:3,Other:1
Imaging is everywhere! In this course, we will cover broadly 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.
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. .25-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. Not open to students who have taken ENGR 452.
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 (Chair)
Associate Professors: Brian R. King, Alan Marchiori, Evan M. Peck, Lea D. Wittie
Assistant Professors: Christopher L. Dancy II, Samuel C. Gutekunst, Alex Kelly, Darakhshan Mir, Joshua V. Stough, Edward Talmage
Visiting Associate Professor: Susan Baish
Visiting Assistant Professor: Alexander Fuchsberger