Franklin & Marshall CollegeWebsiteAcademic Catalog
Computer ScienceDepartment Website
Majors
Courses
source 1CPS 111: Computer Science I (1) intro
Introduces basic concepts in computer science and computational problem solving through the design of algorithms and computational processes, modularization, and abstraction. Also introduces the processes of programming and software development as a means to put solutions into practice. Has a required lab, but does not satisfy the 'Natural Science with Laboratory' requirement.
CPS 112: Computer Science II (1) intro
A second course in computer science and computational thinking, focusing on data structures and advanced programming. Topics include implementation and applications of data structures such as stacks, queues, linked lists, trees and graphs. Also introduces performance analysis of algorithms. Has a required lab, but does not satisfy the 'Natural Science with Laboratory' requirement.
CPS 222: Computer Science III (1) algs
This course will prepare students for advanced computer science courses. Using a production-level programming language as a tool, students will implement advanced data structures and algorithms. Students will also study advanced programming concepts and strategies for algorithm development and analysis. Through programming projects, students will explore complex tree structures, graph algorithms, greedy algorithms, dynamic programming, divide-and-conquer algorithms, and parallelism/concurrency.
CPS 242: Computer Organization (1) sys
This course covers the basic instruction set, architecture, and organization of a modern computer. Fundamentals of translating higher-level languages into assembly language, and interpretation of machine languages by hardware are studied. A model of computer hardware organization is developed from the gate level upward. Topics include logic circuits, micro-architectures and microprogramming, machine architectures, and software-hardware interface issues.
CPS 261: Algorithms (1) algs
Trees, graphs and networks; further analysis of algorithms and their efficiency.
CPS 337: Theoretical Foundations of Computer Science (1) theory
An introduction to the theoretical models used to understand the capabilities and fundamental limitations of computational devices. Topics include formal languages, automata, grammars, computability, reductions, and complexity.
CPS 338: Computational Mathematics (1) math
Numerical analysis as implemented on computers. Polynomial and rational approximations, numerical differentiation and integration, systems of linear equations, matrix inversion, eigenvalues, first and second order differential equations.
CPS 340: Mobile Application Development (1) sys
This course will introduce you to writing applications for the Android platform. The purpose of this course is not to narrowly teach proficiency of Android “App” development, but rather to teach proficiency in learning how to develop applications on a platform that is new to you. Mobile applications on Android will merely serve as a vehicle to achieve this. Throughout the course we will strive to achieve several goals: (a) refine your programming skills in general by solving practical problems that are apt for a mobile platform like Android, (b) learn the fundamentals of Android application development (c) refine your knowledge of the java programming language, and (d) prepare you for the job market after graduation.
CPS 342: Operating Systems (1) sys
Operating systems is the natural extension of the material covered in CPS 242 Computer Organization. Fundamental computing is performed using transistors and digital logic gates. Operating systems explores how we make those basic principles function in a practical, intuitive, and efficient way for general purpose use. The primary functionality of the operating system is to provide a layer between the hardware and software so that the hardware resources can be shared between multiple pieces of software at once. This class will explore this functionality in depth separated into five pillars: (1) Bare Metal Programming, (2) Processes and Threads, (3) Memory Management, (4) File Systems, and (5) Input / Output Devices.
CPS 344: Computer Networks (1) sys
This course provides an in-depth understanding of how computer networks operate, enabling global communication between billions of computers. Students will learn about the layered network architecture, which separates concerns for effective functioning. Beginning with higher-level topics such as website operation, the course progresses to the lower-level details of data transportation in the physical world. The course textbook follows a top-down approach and will be used extensively. Overall, this course will provide a comprehensive understanding of computer networks and their functioning.
CPS 360: Introduction to Machine Learning (1) ai
This course will introduce some foundational machine learning algorithms from both a theoretical and practical perspective, with the focus on developing a deep understanding of a few important algorithms. This deep exploration will expose some of the principles and challenges that lie at the core of nearly all machine learning techniques. The study of machine learning requires the use of mathematical, computational, and empirical tools and students will gain experience bringing all of these tools to bear to understand, apply, and perhaps even improve upon the methods discussed.
CPS 363: Introduction to Bioinformatics (1) science
An introduction to the field of bioinformatics, addressing some of the important biology and computer science concepts related to it, with a focus on the computational aspects. Topics include a molecular biology primer, biological sequence alignments and analysis, gene mutation patterns, phylogenetic tree and construction algorithms, protein structures and functions, proteomics, application of basic machine learning algorithms, and other commonly used bioinformatics tools and resources.
CPS 367: Artificial Intelligence (1) ai
An introduction to some of the core problems and key ideas in the field of artificial intelligence from a computational perspective. The course will focus on exploring various representational and algorithmic approaches to the problem of creating artificial agents that know things, can reason about the world, and that make good decisions. Key topics: heuristic search adversarial search, reinforcement learning, constraint satisfaction, logical inference, probabilistic inference.
CPS 370: Topics in Computer Science (variable) special
Study of specialized areas of Computer Science.
CPS 390: Independent Study (variable) special
Independent study directed by Computer Science staff. Permission of chairperson.
CPS 391: Directed Reading (variable) special
Reading directed by the Computer Science staff. Permission of chairperson.
CPS 490: Independent Study (variable) special
Independent study directed by Computer Science staff. Permission of chairperson.
CPS 491: Directed Reading (variable) special
Reading directed by the Computer Science staff. Permission of chairperson.
MAT 109: Calculus I (1) math
Introduction to the basic concepts of calculus and their applications. Functions, derivatives and limits; exponential, logarithmic and trigonometric functions; the definite integral and the Fundamental Theorem of Calculus.
MAT 110: Calculus II (1) math
Techniques of integration, applications of integration, separable first-order differential equations, convergence tests for infinite series, Taylor polynomials and Taylor series.
MAT 216: Probability and Statistics I (1) math
Introduction to single variable probability and statistics. Random variables. Binomial, geometric, Poisson, exponential and gamma distributions, among others. Counting techniques. Estimation and hypothesis tests on a single parameter.
MAT 229: Linear Algebra and Differential Equations (1) math
Systems of linear equations and matrices, vector spaces, linear transformations, determinants, eigenvalues and eigenvectors, nth order linear differential equations, systems of first order differential equations.
CPS/MAT 237: Computational Discrete Mathematics (1) math
Basic set theory, combinatorics (the theory of counting), finite difference equations, and graph theory with related algorithms.