Computer Science Curriculum

At New College, our program offers all of the intensive coursework in mathematics, programming, software engineering, and networks and algorithms that you would expect from one of the nation's top liberal arts colleges.

For students who want an intensive computer science program at New College, we recommend the following courses in the early terms:

• 1 term of Basic Programming
• 2 terms of Software Engineering, consisting of design and execution of solutions to practical problems in a group setting
• 1 course in Foundations of Computer Science
• 2 terms of Data Structures and Algorithms

Plus several of the following topics:

• Database Systems
• Machine Learning and Data Mining
• Parallel Programming and Graphics
• Networks and Distributed Programming 
• Image Processing

Plus these math prerequisites:

• Discrete Math
• Probability
• Statistics
• Linear Algebra
• Information Theory and Coding

For detailed requirements, check out our General Catalog.

Here’s a list of recent course offerings in Computer Science:
Please note that the list below is only a small sample of courses we offer in Computer Science. For a complete list of courses by semester, click here.

Introduction to Programming in Python
This course is an interdisciplinary introduction to Programming in Python. It satisfies LAC curriculum requirements. The course introduces students to the most important programming concepts such as algorithms, sequences, selections, loops, functions, methods, numeric and string types, file processing, collections, classes and object-oriented programming, and recursion. This course serves as an informal prerequisite for many science classes which require programming. Students enrolled in this course MUST also attend the mandatory workshop. Prerequisites: The course is at the introductory – freshman level. It has no prerequisites and no prior programming experience is assumed. However, it requires a large time commitment and the ability to work with computers for extended periods of time.

Bio-Inspired Artificial Intelligence
1. Computational paradigms inspired by nature (e.g. Evolutionary Computing, Neuro Computing, Swarm Intelligence and Immuno Computing),
2. The simulation of nature in computers (e.g. Artificial Life, Fractals), and
3. The use of natural materials in computing (DNA computing, Quantum computing).
In this course, we will focus on item 1, while reviewing the biological (and math/physics) background and discussing in detail various schemes that have been proposed to create viable algorithms based on the inspiration from biology. This course is an introductory survey course. Students should have a basic understanding of how algorithms can be implemented on a computer using a programming language, but in-depth knowledge of a programming language is not required, and there will be no programming assignments in this course. There are no enrollment limits for this course.

Discrete Math
Discrete Math is a collection of tools needed by mathematicians, computer scientists, economists, and anybody applying math to model and solve real world problems. All the tools pertain to finite objects, and use finite methods in the solution - Calculus is not required! The approach taken in this course is primarily mathematical, although many algorithms and techniques with a wide range of applications will be discussed. We will focus on disciplined thinking and symbolic computation, learn to appreciate well know proofs, and practice to discover and formulate our own. The topics covered will include logic, elementary set theory, algorithms, graph theory, trees, combinatorics and elementary probability, and some algebra and theory of computation. Prerequisites: None, other than the ability to think in a disciplined way and to enjoy math.

Database Systems with Linux
This course is an introduction to database systems. It covers the basic theory of relational databases, some advanced theory topics, and practical database programming under Linux. The theory includes databases vs. files, database design, the relational model, data definition and data manipulation languages, SQL, and query optimization. Students will learn how to use rdb and MySQL interactively and to write programs that create, read, and write to databases. Prerequisite: one year of programming.

Theory of Computation I: Regular Languages and Finite State Automata
Theory of Computation deals with the mathematical theory underlying computation, in three roughly equal parts:
Part 1: finite state automata and regular languages (used, e.g., in lexical analysis, or for the specification of string patterns).
Part 2: context-free languages (e.g. most programming languages), and their specification by means of formal grammars. Also an equivalent description by means of pushdown automata (finite state machines with an infinite memory stack), and the application of this theory to parsing.
Part 3: Turing machines (i.e. a very general mathematical model for any kind of computer) and the functions they can compute, as well as the equivalent notions of recursive functions and functions computable by way of a computer program. This lays the foundation for discussing the limits of computation, i.e. what problems can/cannot be solved by a computer, and what problems are solvable in principle, but too costly in terms of time or space requirements to be practically feasible.

Theory of Computation I comprised all of part 1, and an introduction to part 2. The continuation Theory of Computation II class will comprise the rest of Part 2 and Part 3.

Theory of Computation II: Context-Free Languages and Turing Machines
Theory of Computation deals with the mathematical theory underlying computation, in three roughly equal parts:
Part 1: finite state automata and regular languages (used, e.g., in lexical analysis, or for the specification of string patterns).
Part 2: context-free languages (e.g. most programming languages), and their specification by means of formal grammars. Also an equivalent description by means of pushdown automata (finite state machines with an infinite memory stack), and the application of this theory to parsing.
Part 3: Turing machines (i.e. a very general mathematical model for any kind of computer) and the functions they can compute, as well as the equivalent notions of recursive functions and functions computable by way of a computer program. This lays the foundation for discussing the limits of computation, i.e. what problems can/cannot be solved by a computer, and what problems are solvable in principle, but too costly in terms of time or space requirements to be practically feasible. This course is a continuation of Theory of Computation I.

Data Mining
The interdisciplinary field of data mining emerged in the early 1990s as a response to the profusion of digital data emerging from numerous applications areas such as biology, chemistry, astronomy, advertising, banking and finance, retail market, stock market, and the WWW, just to name a few. The nature of this field is entirely interdisciplinary attracting experts, researchers and interested audiences from a wide variety of disciplines with the common goal of extracting useful hidden nuggets of knowledge that could aid in decision-making processes and which would have remained unknown otherwise. Operating over huge volumes of data is an intrinsic idiosyncrasy of this young vibrant field.
This course will focus on the four pillars of data mining, namely, association rule mining, classification, clustering and outlier analysis. It will also expose to related topics from artificial intelligence and machine learning. Students will learn a number of state-of-the-art algorithms, understand the theory behind them, observe their applications on real-life data sets, and write programs that implement some of them. As a field still in its infancy, new topics in data mining emerge almost daily. Consequently, students will acquire familiarity with reading and understanding new and advanced topics in data mining and attempt to analyze and cope with their idiosyncrasies. Students will culminate their work in this course by completing a research project. Prerequisites: Advanced programming skills (including data structures such as lists, trees, and graphs).

Bioinformatic Machine Learning
This course is an introductory course in Machine Learning with Bioinformatics viewpoint. This will be a ‘learning by doing’ course, where students from a variety of backgrounds (biology, math, programming) will work together to attack projects via problem based learning.
COURSE OBJECTIVES:
1. Understand what Machine learning, knowledge discovery in databases, and data mining is.
2. Understand fundamental types of machine learning algorithm types such as supervised learning vs unsupervised learning.
3. Consider different machine learning algorithms such as support vector machines and when to use them.
4. Use an open sourced, python based data mining package such as Orange or Rapid Miner to begin to explore how we would apply this knowledge.

Tutorials in Computer Science
The faculty offer regular tutorials on a number of topics including programming languages, topics in evolutionary computing, AI, neural networks, data structures and applied scientific computing. Prerequisites: Permission of instructor. 

[Did you know?]


Of all science graduates since 1967 at New College, roughly one-third have earned an M.D. or Ph.D.

Office of the Provost
New College of Florida
5800 Bay Shore Road
Sarasota, Florida  34243

Phone: (941) 487-4200
Fax: (941) 487-4201
provost@ncf.edu