Fall 2020

Course Code Title/Instructor Meets
COMP 130-01 Introduction to Computing
Instructor: Lev Fruchter
Course Description:
Classes will be held synchronously 3 days per week plus a 2 hour synchronous lab once per week. Much work will be done in teams of 3 students, so participants should be eager for online small group projects. Synchronous office hours will be available online at scheduled times and via appointment, but active particpation in online class forums is vital for this course. 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. Three hours classroom and two hours laboratory a week. Offered every semester.
1500:W   DIST
0830:MWF   DIST
COMP 130-02 Introduction to Computing
Instructor: Lev Fruchter
Course Description:
Classes will be held synchronously 3 days per week plus a 2 hour synchronous lab once per week. Much work will be done in teams of 3 students, so participants should be eager for online small group projects. Synchronous office hours will be available online at scheduled times and via appointment, but active particpation in online class forums is vital for this course 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. Three hours classroom and two hours laboratory a week. Offered every semester.
1130:MWF   DIST
1500:R   DIST
COMP 132-01 Principles of Object-Oriented Design
Instructor: John MacCormick
Course Description:
All students will meet via Zoom at the scheduled lecture and lab times. 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: Equivalent of one course of prior programming experience. See Advising Guide for placement advice for 130 and 132. Three hours classroom and two hours laboratory a week. Offered every semester.
1500:T   DIST
1030:MWF   DIST
COMP 180-01 Introduction to Data Science
Instructor: Jeffrey Forrester
Course Description:
Cross-listed with MATH 180-01.This course will have asynchronous lectures and Zoom-style group meetings for discussion. Zoom Office Hours will also be held. An introduction to the principles and tools of data science focusing on exploratory data analysis. Topics include types of variables, mathematical representations of data, data wrangling and transformations, data visualization, supervised and unsupervised machine learning, and cross-validation. The course will include an introduction to the R statistical environment. No prior programming experience is required. Prerequisite: MATH 170 or any COMP course or department placement. This course is cross-listed as MATH 180.
1030:TR   DIST
COMP 190-01 Tools and Techniques for Software Development
Instructor: Grant Braught
Course Description:
Will be taught asynchronously. 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.
  DIST
COMP 232-01 Data Structures and Problem Solving
Instructor: Farhan Siddiqui
Course Description:
Course will be offered as completely remote. Synchronous class meetings will occur on line (e.g. zoom / teams) at scheduled class times. Recordings of synchronous sessions will be provided for those who are unable to attend due to valid reasons discussed with the instructor. Synchronous office hours will also be available online at scheduled times and via appointment. Exams will be conducted online in a synchronous setting. Students will be required to have access to a computer on which they can install software. 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 fall.
0930:MWF   DIST
COMP 256-01 Computing Abstractions
Instructor: Grant Braught
Course Description:
The course will be taught using asynchronous techniques. Synchronous review and help sessions for both class periods and lab periods will be scheduled. Synchronous small group work will be required for lab assignments. 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.
  DIST
COMP 332-01 Analysis of Algorithms
Instructor: Dick Forrester
Course Description:
Video lectures will be provided that students will watch and take notes from asynchronously, but we will meet during our regular class time through Zoom. Students will be required to attend the synchronous weekly Zoom meetings that will take place during the regularly scheduled times (I will make exceptions for certain circumstances, such as large time-zone differences).Completion of both COMP 251 & COMP 332 fulfills the WID Requirement. 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.
0900:TR   DIST
COMP 356-01 Programming Language Structures
Instructor: Farhan Siddiqui
Course Description:
Course will be offered as completely remote. Synchronous class meetings will occur on line (e.g. zoom / teams) at scheduled class times. Recordings of synchronous sessions will be provided for those unable to attend due to valid reasons discussed with the instructor. Exams will be conducted online in a synchronous setting. Synchronous office hours will also be available on line at scheduled times and via appointment. Students will be required to have access to a computer on which they can install software. 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.
0730:R   DIST
1330:M   DIST
COMP 364-01 Artificial Intelligence
Instructor: Michael Skalak
Course Description:
Classes will be held in person. A synchronous online meeting (e.g. zoom / teams) will run and be recorded concurrently with class for those unable or uncomfortable attending in person. Lecture materials will be recorded and provided on line either in advance or via the concurrent online meeting. Synchronous office hours will also be available online at scheduled times and via appointment. Students will be required to have access to a computer on which they can install software or use Tome lab computers which will contain the required software. 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.
1030:TR   DIST
COMP 491-01 Fall Senior Seminar
Instructor: Farhan Siddiqui
Course Description:
Course will be offered as completely remote. Synchronous class meetings will occur on line (e.g. zoom / teams) at scheduled class times. Synchronous attendance will be mandatory for discussions. Other activities in the Senior Seminar may be done asynchronously if necessary. Synchronous office hours will also be available online at scheduled times and via appointment. Students will be required to have access to a computer on which they can install software. 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.
0730:T   DIST
1330:F   DIST