Major

(Effective Fall 2019)
A minimum of eleven credits in computer science numbered 132 or higher, including: 132, 190, 232, 256, 290, 314, 332, 491, 492
(Note: 190 and 290 are ½ credit each.)

One course designated as Abstraction Implementation (352 OR 354)

Two additional computer science elective courses including:

  • At least one numbered 200 or higher. This course may be replaced by PHYS 213 or, with prior approval of the department, another appropriate course outside of computer science.
  • At least one numbered 300 or higher

Two credits in mathematics:
MATH 170
MATH 211

Minor

(Effective Fall 2019)
A minimum of six credits in computer science numbered 132 or higher, including:  132, 190, 232 and 256
(Note: 190 is ½ credit.)

Three additional computer science elective courses including:

  • At least one course numbered 200 or higher. This course may be replaced by PHYS 213 or, with prior approval of the department, another appropriate course outside of computer science.
  • At least two courses numbered 300 or higher.

NOTE: Courses designated as Abstraction Implementation will have COMP 256 and COMP 232 as prerequisites and will require students to implement elements of a computing system at a minimum of three distinct levels of abstraction. Two courses in our current catalog will carry this designation: COMP 352 – Computer Networks and COMP 356 – Operating Systems.  Additional courses that may be added over time include: Computer Organization and Architecture, Compilers, Web Application Architectures.

Suggested curricular flow through the major

Careful consideration has been given to ensuring that students can begin the major in COMP 130 or COMP 132 either immediately, or as late as their third semester, still complete the major in four years and have at least one option for study abroad. The scenarios below illustrate the different courses of study based upon when the major is begun and with which course.  

Scenario A B C D E
1st Fall 130 X X M170, 132 M170, 232
1st Spring M170, 132 130 X M211, 256 M211, 256
2nd Fall M211, 232, 190 M170, 132, 190 130 232, 190 2/3xx, 190
2nd Spring 256, 314, 290 M211, 290, 256 M170, M211,132 290, 314, 2/3xx 290, 315, 3xx
3rd Fall Study Abroad 232 [1],[2], 232[2], 290 Study Abroad Study Abroad
3rd Spring Study Abroad Study Abroad 256, 290 Study Abroad Study Abroad
4th Fall 332, 2/3xx, 491 332, 3xx, 2/3xx, 491 332, 2/3xx, 491 332, 491 332, 491
4th Spring 3xxA, 3xx, 492 314, 3xxA, 492 314, 3xxA, 3xx, 492 3xxA, 3xx, 492 3xxA, 492

[1] Fall only or full year study abroad are possible here with careful planning. There is a course at The University of Queensland in Australia that we can accept in place of COMP 232 (COMP 3506 – Algorithms and Data Structures). Students willing to study abroad for a year at the same location can complete COMP 232 abroad at The University of East Anglia in Norwich (CMP 5014Y Data Structures and Algorithms).

[2] Fall only study abroad is possible here with careful planning. There is a course at The University of Queensland in Australia that we can accept in place of COMP 232 (COMP 3506 – Algorithms and Data Structures). A remote tutorial could be arranged for COMP 190 for students in scenario C.


Notes:
- 2/3xx indicates a 200- or 300-level elective
- 3xxA indicates a 300-level Abstraction Implementation elective
- Study abroad options have been shown with minimal or no COMP taken to allow for the maximum range of possible study abroad opportunities. If students take COMP courses while abroad, which we anticipate most will, scheduling flexibility increases and the course load can be distributed more evenly across the remaining semesters.

Students interested in majoring or minoring in COMP should register for either COMP 130 or COMP 132 in their first semester.  Students with limited or no prior programming experience should request COMP 130 in their first semester.  Students with prior programming experience (e.g. a high-school course, or substantial self-taught experience) should review the descriptions for COMP 130 and COMP 132 and the Advising Guide to determine the appropriate course to request.  Students with AP credits for computer science should refer to the Registrar’s page to determine what credit will be given and the appropriate course to request.  Students with questions can contact any of the department faculty for assistance in selecting the proper first course or for advice on paths through the major.

Students matriculating prior to fall 2019 will be able to choose to complete the old or new major requirements.  Information about the old curriculum may be found in the Bulletin at the following link.

Students who decalred a major or minor in computer science prior to fall 2019 are ensured to be able to complete the program.  More information is provided at the following link.

SOCIAL INNOVATION AND ENTREPRENEURSHIP

Students majoring in computer science who have an interest in humanitarian service through innovation and entrepreneurship are encouraged to consider also completing the Social Innovation and Entrepreneurship (SINE) Certificate. Several computer science courses that focus on developing computer science knowledge, skills and practices through participation in humanitarian open source software projects can be used to satisfy requirements for the SINE certificate. In particular, the fall computer science senior seminar (COMP491) serves as a SINE elective and the spring computer science senior seminar (COMP492) may serve as the SINE experiential learning component.  If you are interested in pursuing a SINE certificate as a computer science major please discuss it with your major advisor.

MAJOR ADVISORS

A student wishing to declare a major should bring the appropriate major declaration form, available from the Registrar’s page, to the department chair.  Based on the student’s preferences, interests and current faculty advising loads the chair will assign one of the department faculty as the major advisor. Students are encouraged to meet with their major advisor at least once per term prior to course selection to discuss directions of study and how they align with future goals and plans.

 

Honors

Departmental honors is the highest distinction that the Department can award to a Major. Majors who receive departmental honors will be those who demonstrate a broad mastery of the discipline as well as an ability to complete and present high quality research. A broad mastery of the discipline is demonstrated by a GPA of 3.40 or higher in all courses related to the major. The ability to complete high quality research is demonstrated by the completion of a yearlong research project. This project will be characterized by an independent and in-depth study of an advanced topic including a literature search, reading of original sources and a novel formulation of results. Finally, the ability to present such research is demonstrated by the preparation of an honors thesis, a public presentation and a successful defense of the work to the department faculty. More detailed information is available on the department's web site.

Opportunities for off-campus study

The table in the Suggested curricular flow through the major section illustrates the study abroad options for students beginning the major in COMP 130 in any of their first three semesters or in COMP 132 or COMP 232 in their first semester.  In scenarios, A, D and E Students are able to complete the major while studying abroad for a year on any program, including one where it is not possible to take any computer science courses. 

Students in scenario B can study abroad for a semester on any program or for a full year on a program where it is possible to complete the equivalent to COMP 232 (see footnote 1 below table).

Students in scenario C may be able to study abroad for a single semester in a program where it is possible to complete the equivalent of COMP 232 (see footnote 2 below table). These students would also need to make arrangements with the department faculty to complete a remote tutorial for COMP 190 to serve as a prerequisite for COMP 290.

The primary study abroad programs for COMP majors are:  Dickinson in England Math & Sciences at the University of East Anglia; Dickinson in Australia at the University of Queensland; DIS Study Abroad in Copenhagen; and the University of Otago, New Zealand.

Courses

130 Introduction to Computing
An introduction to computer science as a scientific discipline. The key elements of computer programming will be introduced, using the Python programming language. This leads to techniques for solving problems and conducting scientific investigations via computation. Core topics include: programming constructs such as conditionals, loops, functions, and parameters; data structures such as arrays and dictionaries; libraries and objects; algorithmic techniques such as recursion; and software engineering techniques such as testing and debugging. Additional topics include social, legal and ethical issues raised by computing and computing for the greater good.
Students may not take this course for credit if they have already taken another Dickinson Computer Science course (COMP 131 or higher). Three hours classroom and two hours laboratory a week. Offered every semester.
Attributes: Lab Sciences, Quantitative Reasoning, SINE Elective

131 Introduction to Computer Science I
An introduction to Computer Science as a major scientific discipline. Special emphasis is placed on problem solving and experimentation via programming in Java. Topics covered include the design of objects and the use of flow-of-control constructs, along with techniques for testing software.
Three hours classroom and two hours laboratory a week. Offered every semester.
Attributes: Appropriate for First-Year, ENST Foundations (ESFN), Lab Sciences, Quantitative Reasoning

132 Principles of Object-Oriented Design
An introduction to object-oriented software design using Java. Topics include objects, classes, code modularity and reusability, abstraction, encapsulation, inheritance, polymorphism, and design patterns. Additional topics include unit testing, recursion, empirical and theoretical comparison of elementary algorithms. The lab component focuses on programming as a tool for solving problems and simulating real-world events.
Prerequisite: None. See Advising Guide for placement advice for 130 and 132. Three hours classroom and two hours laboratory a week. Offered every semester.
Attributes: Appropriate for First-Year, ENST Foundations (ESFN), Lab Sciences, Quantitative Reasoning

190 Tools and Techniques for Software Development
An introduction to the Unix command line environment, shell scripting, system administration, debugging tools and version control. Skills developed will be applied in the context of a Humanitarian Free and Open Source Software (HFOSS) project. Case studies of social, legal and ethical issues raised by computing and computing for the greater good will complement the technical skill development.
Prerequisite: 132, may be taken concurrently. One-half credit. Graded CR/NC. 75 minutes of classroom per week. Offered every fall.
Attributes: SINE Elective

203 Special Topics
Topics to be announced when offered. Possible topics include: Cyber Security, Robotics, Programming Challenges and others depending upon faculty and student interest.
Prerequisite dependent on topic. One-half or one course credit.

232 Data Structures and Problem Solving
An advanced problem-solving course that focuses on the design, analysis and application of data structures including lists, stacks, queues, trees, and hash tables. Concepts in generic and functional programming are introduced. This course also further develops understanding and use of asymptotic analysis.
Prerequisite: 132.. Offered every spring.
Attributes: Quantitative Reasoning

241 Numerical Methods
An introduction to numerical methods for solving mathematical problems. Topics chosen from interpolation, numerical differentiation and integration, solutions to linear and nonlinear systems, numerical solutions to differential equations and related topics.
Prerequisite: Completion of two of the following courses: MATH 170,171, 211 and 270. This course is cross-listed as MATH 241. Offered in even numbered spring semesters.
Attributes: ENST Foundations (ESFN), Quantitative Reasoning

251 Computer Organization and Architecture
An introduction to the internal structure and operation of computers. Topics include an introduction to assembly language programming, data representation, machine arithmetic, digital logic, basic hardware components, input/output processing and a survey of modern machine architectures.
Prerequisite: 132. NOTE: Completion of both 251 and 332 fulfills the WID graduation requirement. Offered every fall.

256 Computing Abstractions
A broad examination of the role and evolution of the abstraction hierarchies that enable the construction of complex computing systems. Examples spanning the field of computer science will be used, including: machine organization and architecture, data representation, language translation, operating systems, concurrency, networks, and web application architectures.
Prerequisite: 132. Three hours of classroom and two hours of laboratory a week. Offered every spring.

290 Large-scale and Open Source Software Development
An introduction to large-scale software development through participation in a Humanitarian Free and Open Source Software (HFOSS) project. Readings and discussions will focus on FOSS and HFOSS philosophy, licensing, communication tools, project and community organization, and software engineering topics related to large-scale software development. Case studies of social, legal and ethical issues raised by computing and computing for the greater good will complement participation in the HFOSS project.
Prerequisites: 132 and 190. One-half credit. Graded CR/NC. 75 minutes of classroom per week. Offered every spring.
Attributes: SINE Elective

314 Computability and Complexity
An introduction to the theory of computation, addressing the fundamental question of what problems can be solved using computers, both in principle and when efficiency is taken into account. Topics may include: finite automata, undecidable problems (such as the halting problem), Turing machines, regular languages, context-free grammars, universal computation, elementary complexity classes, NP-completeness, and the P vs NP problem.
Prerequisites: 132 and MATH 211. This course is cross-listed as MATH 314. Offered every spring.

331 Operations Research
An introduction to deterministic operations research, including linear programming, sensitivity analysis, and duality. Special topics may include transportation and assignment problems, network models, integer programming, and game theory.
Prerequisite: 262. This course is cross-listed as MATH 331. Offered in odd numbered fall semesters.
Attributes: ENST Foundations (ESFN), Quantitative Econ Elective, Quantitative Reasoning

332 Analysis of Algorithms
A study of algorithmic approaches to problem-solving and techniques for analyzing and comparing algorithms. Algorithm design strategies such as divide-and-conquer, dynamic programming, and backtracking will be explored in conjunction with problems that they solve and the data structures that they use (e.g. graphs). Topics in computational complexity include formal use of upper, lower and tight asymptotic bounds, analysis of recursive algorithms and lower bound arguments.
Prerequisite: 232, MATH 211. Offered every fall.

352 Computer Networks
An introduction to the fundamental concepts in computer networking with a focus on the Internet’s architecture and protocols. Topics include layered architectures, client-server computing, routing, switching, reliable and unreliable protocols, data encoding and compression, error detection and correction, flow control, congestion control, and network performance metrics. Additional topics may include wireless networks and security
Prerequisite: 232 and 256.

354 Operating Systems
A study of the principles underlying the organization and implementation of computer operating systems. Topics include multiprogramming, time-sharing, mutual exclusion and synchronization, process scheduling, memory management, and file systems.
Prerequisites: 232 and 256.

356 Programming Language Structures
An examination of the major programming language paradigms. The course also explores the basic properties and special facilities of languages representing each paradigm. Topics include data types, scope rules, block structures, procedure calls and parameter types, and storage allocation considerations.
Prerequisite: 232. Offered every fall.

364 Artificial Intelligence
A survey of techniques for applying computers to tasks usually considered to require human intelligence. Topics include knowledge representation and reasoning, search and constraint satisfaction, evolutionary and genetic algorithms, machine learning, neural networks, and philosophical questions.
Prerequisites: 232 and MATH 211. Offered in even numbered fall semesters.

378 Database Systems
A study of the conceptual, technical and social issues involved in organizing, storing and accessing large volumes of data. Topics may include data modeling, relational database design, relational algebra, data definition languages, data manipulation languages, and the storage and manipulation of unstructured data..
Prerequisites: 232 and MATH 211.

390 Free and Open Source Development Practicum
An independent study in which an individual student or small team of students participates in a Humanitarian and/or Free and Open Source (H/FOSS) community for the semester under the guidance of a faculty mentor. Interested students must identify a faculty mentor, select and justify the H/FOSS community and negotiate the scope of work prior to registration.
Prerequisite: 232 and 290.
Attributes: SINE Elective

393 Special Topics
Topics to be announced when offered. Possible topics include: Compiler Design, Artificial Life, Biologically Inspired Computing, Cyber Security, Machine Learning, and others depending upon faculty and student interest.
Prerequisite dependent upon topic. One-half or one course credit..

491 Fall Senior Seminar
A senior capstone course. Students identify and begin a year-long project with options including honors and independent research projects or participation in a Free and Open Source Software (FOSS) project. Class readings and discussions will focus on social, legal and ethical issues in computing, software engineering topics and contemporary issues in computer science. Written and oral presentation of technical and non-technical content will be required..
Prerequisite: 290 and Senior standing. Offered every fall.

492 Spring Senior Seminar
A continuation of the senior capstone course. Students continue the year-long project begun in 491. Class readings and discussions will focus on additional social, legal and ethical issues in computing, software engineering topics and contemporary issues in computer science. Written and oral presentation of technical and non-technical content and a final public presentation of the completed project will be required.
Prerequisite: 491. Offered every spring.