Catalog 2017-2018

Mathematics and Computer Science

Teaching Faculty

Professors Barel, Campbell, Ferrer (chair), and D. Sutherland 
Associate Professors Camfield and Goadrich 
Assistant Professors Downes and Yorgey 
Instructor Seme

Description

The Department of Mathematics and Computer Science offers a major in Mathematics, a major in Computer Science, and minors in Mathematics, Applied Mathematics, and Computer Science. A student may double major in Mathematics and Computer Science or major in one discipline and minor in the other. Students majoring in Mathematics may not minor in Applied Mathematics.


Three years of high school mathematics, including two years of algebra and one year of geometry, or equivalent preparation, are necessary for all courses offered in the Department. Trigonometry/Precalculus is strongly recommended. A student who studied calculus before enrolling in Hendrix College may receive course credit for MATH 130  Calculus I  if he or she takes MATH 140  Calculus II  with consent of the instructor and passes it with a grade of C  or better. Alternatively, a student may receive course credit for MATH 140  Calculus II  if he or she takes MATH 230 Multivariable Calculus  or MATH 260  Differential Equations  with consent of the instructor and passes it with a grade of C  or better.

 

AP Credit

Mathematics

A student who scores a 4 or higher on the Calculus AB exam or a 3 or higher on the Calculus BC exam will receive course credit for MATH 130 Calculus I.  In addition, a student scoring 4 or higher on the Calculus BC exam will receive course credit for MATH 140  Calculus II.

Computer Science

A student who scores a 3 or higher on the Computer Science A exam will receive course credit for CSCI 150  Foundations of Computer Science (w/Lab).

Major in Mathematics

11 courses distributed as follows:

  • MATH 130 Calculus I
  • MATH 140 Calculus II
  • MATH 270 Linear Algebra
  • MATH 290 Introduction to Advanced Mathematics
  • 1 of the following two-course sequences: 
         MATH 320 Algebra  and MATH 420 Seminar in Algebra
               or 
         MATH 350 Real Analysis  and MATH 450 Seminar in Analysis 
  • 2 courses chosen from the following: 
         any mathematics courses numbered 230 or above 
         CSCI 151 Data Structures (w/Lab)
         CSCI 285 Scientific Computing
         CSCI 365 Functional Programming
         CSCI 380 Theory of Computation
         ECON 300 Advanced Microeconomic Theory
         ECON 430 Management Science
         PHYS 380 Classical Mechanics
  • 3 additional courses chosen from the following: 
         Any mathematics courses numbered 300 or above 
         CSCI 380 Theory of Computation
  • Year-long non-credit MATH 497 Senior Seminar

 

Note(s):

  • A working knowledge of a high-level computer language such as Python or Java is strongly recommended.
  • Those preparing for graduate studies in mathematics should take MATH 230  Multivariable Calculus,  MATH 260  Differential Equations, MATH 320  Algebra,  and MATH 350  Real Analysis.

 

Major in Computer Science

12 courses distributed as follows:

  • CSCI 150 Foundations of Computer Science (w/Lab)
  • CSCI 151 Data Structures (w/Lab)
  • MATH 130 Calculus I
  • MATH 240 Discrete Mathematics
  • CSCI 230 Computing Systems Organization
  • CSCI 320 Operating Systems & Concurrency
                 or 
    CSCI 340 Database and Web Systems
  • CSCI 352 Scalable Software
  • CSCI 382 Algorithms and Problem-Solving Paradigms
  • One of the following: 
          CSCI 285  Scientific Computing
          CSCI 365 Functional Programming
          CSCI 380 Theory of Computation
          MATH 340 Combinatorics
  • 1 additional CSCI course numbered 200 or above
  • 1 additional CSCI course numbered 300 or above
  • CSCI 410 Senior Seminar   

 

Note(s):

  • A student who studied programming before enrolling at Hendrix College may take CSCI 151  Data Structures (w/Lab) with consent of the instructor. If the student passes the course with a  C  or better, the CSCI 150  Foundations of Computer Science (w/Lab)  requirement for the computer science major and minor will be waived for that student. The student will also be eligible to take any other CSCI course that has CSCI 150 Foundations of Computer Science (w/Lab)  as a prerequisite.

 

Senior Capstone Experience

Mathematics

The Senior Capstone Experience for the mathematics major consists of an undergraduate research portfolio and participation in two semesters of the Senior Seminar course. MATH 497  Senior Seminar  is a non-credit courses that meet biweekly to guide students through the process of developing a senior undergraduate research project. The undergraduate research portfolio consists of the senior project and any other research projects completed by the student outside of regular course work. The grade for the Senior Capstone Experience is based on the portfolio and an oral presentation of the senior project and will be determined collectively by the department faculty. 

Computer Science

The Senior Capstone Experience for the computer science major is satisfied by completing a substantial computing project.  Projects may involve software development, writing a literature review, or creating educational materials for particular topics or technologies.  These projects will normally be completed as part of the required CSCI 410  Senior Seminar  course, under the supervision of the course instructor.  The capstone grade for each student will be determined collectively by the department faculty.

Computer science majors wishing to graduate with distinction will undertake a year-long senior undergraduate research project (earning UR Odyssey credit) to satisfy the capstone requirement.  Each research project will be undertaken in close collaboration with a faculty member from the department.  Each project will culminate in a public presentation, typically during the Spring semester of the senior year.  Students interested in this option should have at least a 3.0 GPA in the major.  Ideally, students will begin project discussions with departmental faculty by the end of the junior year; in any event, the research project should begin by the end of the second week of the senior year.

 

Minors

Minor in Mathematics

6 courses distributed as follows:

  • MATH 130  Calculus I
  • MATH 140  Calculus II
  • MATH 240  Discrete Mathematics
              or 
    MATH 270  Linear Algebra
  • MATH 290  Introduction to Advanced Mathematics
  • 1 mathematics course numbered 230 or above
  • 1 mathematics course numbered 300 or above

 

Minor in Applied Mathematics

7 courses distributed as follows:

  • CSCI 150  Foundations of Computer Science (w/Lab)
  • MATH 130  Calculus I
  • MATH 140  Calculus II
  • At least two courses chosen from: 
              CSCI 285  Scientific Computing
              MATH 310  Probability and Statistics
              MATH 365  Mathematical Models
  • Up to two courses chosen from: 
              MATH 230  Multivariable Calculus
              MATH 260  Differential Equations
              MATH 270  Linear Algebra
  • Other courses such as MATH 490  Advanced Topics  may be approved by department when appropriate

 

Minor in Computer Science

6 courses distributed as follows:

  • CSCI 150  Foundations of Computer Science (w/Lab)
  • CSCI 151  Data Structures (w/Lab)
  • MATH 130  Calculus I
  • Any CSCI course numbered 200 or above 
              or 
    MATH 240  Discrete Mathematics
  • 1 additional CSCI course numbered 200 or above
  • 1 additional CSCI course numbered 300 or above

 

Program Course Listings

The courses for this program are organized into the following categories:

Mathematics Courses

MATH 115

Mathematics in Contemporary Issues

A survey of mathematics used to solve current problems, including analysis of political and social structures, problem solving, and abstraction. Topics may include voting methods, power distributions, apportionment, fair division, graph theory, coding theory, scheduling, personal finance, geometry/fractals and statistics.

Quantitative Studies QS
Social and Behavioral Analysis SB
MATH 120

Functions and Models

Study of algebraic, trigonometric, exponential and logarithmic functions within the context of mathematical modeling. Students who already have credit for MATH 130/140/230/260 are not allowed to take this course without instructor permission.

Quantitative Studies QS
MATH 130

Calculus I

Study of limits, differentiation, and integration of functions of one variable. Prerequisite: MATH 120 or its equivalent

MATH 120 or its equivalent
Natural Science Inquiry NS
Quantitative Studies QS
MATH 140

Calculus II

Further aspects of integration of functions of one variable. Infinite series. Prerequisite: MATH 130 or advanced placement

MATH 130 or advanced placement
Natural Science Inquiry NS
Quantitative Studies QS
MATH 195

Mathematical Problem-Solving

Practical sessions in solving challenging problems in mathematics (possible sources: periodicals, problem collection books, or Putnam exams). The class meets biweekly to discuss solutions and receive new assignments. Most problems are solved between sessions, individually or in groups. This course is a .25 credit activity course and may be repeated for additional credit. Note that there is a limit of two course credits from partial credit courses that can be used toward the 32 courses required for graduation. Students must complete four semesters of the seminar in order to receive Odyssey SP credit. Prerequisite: MATH 130 or MATH 140 or consent of instructor

MATH 130 or MATH 140 or consent of instructor
MATH 215

Statistical Analysis

An introduction to some of the mathematical and statistical methods used in the analysis of social and natural scientific phenomena with an emphasis on the interpretation of experimental and survey data. Topics include elementary and combinatorial designs, basic statistical methods, correlation and inference, and regression analysis. Applications to the students’ major disciplines are included throughout the course as well as in one or more substantial projects. This course will not satisfy any requirements for a major or minor in mathematics. Students may not receive credit for both this course and another introductory statistics course such as BUSI 250, PSYC 290, or SOCI 210. Prerequisite: Sophomore standing or higher

Sophomore standing or higher
Quantitative Studies QS
MATH 230

Multivariable Calculus

Vectors and coordinate systems in two and three dimensions, vector-valued functions, functions of several variables, extrema, multiple integrals, vector fields, including fundamental theorems of vector calculus. Emphasis is placed on developing geometric intuition. Prerequisite: MATH 140 or consent of instructor

MATH 140 or consent of instructor
MATH 240

Discrete Mathematics

An introduction to the discrete paradigm in mathematics and computer science. Topics include induction, recursion, logic, algorithmic problem-solving, asymptotic analysis of algorithms, graph theory, number theory, and counting techniques. Prerequisite: MATH 130 or consent of instructor

MATH 130 or consent of instructor
MATH 260

Differential Equations

Study of ordinary differential equations and systems of equations, through the use of analytic, qualitative/geometric, and numerical techniques. Applications from physics, biology, chemistry, engineering, economics, and psychology are presented. Prerequisite: MATH 140

MATH 140
MATH 270

Linear Algebra

Solving linear systems, matrix algebra, vector spaces and linear transformations, eigenvectors, orthogonality. Prerequisite: MATH 130

MATH 130
MATH 280

History of Mathematics

A survey of mathematical ideas and discoveries in their historical context. The course combines mathematics (proofs and problems) with readings on its development. Offered in alternate years. Prerequisite: MATH 130 or consent of instructor

MATH 130 or consent of instructor
Historical Perspectives HP
Writing Level 2 W2
MATH 290

Introduction to AdvancedMathematics

Fundamentals of set theory, logic, and functions. Emphasis is on developing the students’ theorem-proving skills, independent work, written and oral communication skills, and ability to critique others’ work. Prerequisite: MATH 140 and completion of, or concurrent enrollment in, MATH 240 or MATH 270

MATH 140 and completion of, or concurrent enrollment in, MATH 240 or MATH 270
Writing Level 2 W2
MATH 310

Probability and Statistics

Theory of probability and mathematical statistics including an introduction to basic concepts of probability theory, discrete and continuous random variables, distribution theory, moment-generating functions, and the Central Limit Theorem. Other topics may include the theory of statistical inference, point estimation, confidence intervals, regression, hypothesis testing, and analysis of variance. Offered in alternate years. Prerequisite: MATH 140

MATH 140
MATH 320

Algebra

Introduction to classical algebraic systems and their morphisms. Topics include groups, rings, fields, substructures, ideals, homomorphisms, and quotients. Offered in alternate years. Prerequisite: MATH 290

MATH 290
Writing Level 2 W2
MATH 340

Combinatorics

Continues the ideas of counting, graph theory, and algorithms from Mathematics 240. Topics may include Ramsey Theory, designs, coding theory, generating functions, and optimization. Offered in alternate years. Prerequisite: MATH 240 or MATH 290

MATH 240 or MATH 290
MATH 350

Real Analysis

A rigorous study of the structure of the real line and the properties of real-valued functions. Topics include sequences, limits, continuity, differentiability, and integrability. Offered in alternate years. Prerequisite: MATH 290

MATH 290
Writing Level 2 W2
MATH 365

Mathematical Models

Methods used to model, gather, interpret, and evaluate data critically. Topics may include model building, signal processing, numerical analysis, and stochastic processes. Offered in alternate years. Prerequisite: MATH 140

MATH 140
MATH 420

Seminar in Algebra

Algebraic topics that extend the fundamental ideas in MATH 320 will be presented. Offered in alternate years. Prerequisite: MATH 320

MATH 320
MATH 450

Seminar in Analysis

Analytic topics that extend the fundamental ideas in MATH 350 will be presented. Offered in alternate years. Prerequisite: MATH 350

MATH 350
MATH 490

Mathematics: Advanced Topics

A topics course in mathematics. This course can be repeated for additional credits as long as the section topics are different. Recent section topics include Game Theory, Image Processing, Topology, Number Theory, Complex Variables. Consult the online course schedule for information about the topics currently scheduled to be taught. Prerequisite: Consent of instructor

Consent of instructor
MATH 497

Mathematics: Senior Seminar

A required seminar for all senior mathematics majors which meets throughout the academic year. Each student develops an individual research project under the direction of a faculty advisor and presents the results both orally and in written form. Students also majoring in computer science should enroll in CSCI 497 in one semester and MATH 497 in the other.

Undergraduate Research UR
Back to Program Course Listings

Computer Science Courses

CSCI 150

Found of Computer Science (w/Lab)

Introduction to computational problem-solving and computer programming. Topics include imperative programming constructs (variables, loops, conditionals, functions, recursion, file processing), basic object-oriented constructs (classes, objects), and some fundamental algorithms and data structures (dictionaries, arrays, linked lists, regular expressions). Students learn through studying the Python programming language. Laboratory course.

Natural Science Inquiry with Lab NS-L
Quantitative Studies QS
CSCI 151

Data Structures (w/ Lab)

Builds on skills acquired in CSCI 150, placing emphasis on object-oriented software design and data abstraction. Students are introduced to data structures (lists, stacks, queues, trees, heaps, hash tables, graphs) and programming techniques such as recursion and sorting algorithms. Other topics include analysis of algorithm complexity, automated unit testing, inheritance. Programming assignments focus on the design and implementation of algorithms and data structures using the Java language. Laboratory course. Prerequisite: CSCI 150 or consent of instructor.

CSCI 150 or consent of instructor.
Natural Science Inquiry with Lab NS-L
CSCI 230

IndSt:Computing Systems Org

A study of the layers of abstraction composing the design of modern computing systems. Topics include numeric representation, digital logic, CPU design, machine and assembly language, the program stack, virtual machines, compilers, assemblers, memory management and device drivers. Prerequisite: CSCI 150

CSCI 150
CSCI 235

Intelligent Robotics

A study of the application of artificial intelligence to solving problems in robotics. Topics include subsumption, planning, machine learning, vision, neural networks, localization, and mapping. Students configure provided implementations of algorithms to control physical robots. Prerequisite: CSCI 150

CSCI 150
Special Projects SP
CSCI 270

Computational Humanities

A survey of the tools and techniques of computation as applied to concepts in humanities. Covers the use of computing to analyze and synthesize textual, visual, and aural data, as well as the creation of new digital artifacts using computation. Topics normally include natural language processing and translation, information retrieval, sentiment analysis, document clustering, data visualization, procedural music generation, and digital art. Prerequisite: CSCI 150

CSCI 150
CSCI 285

Scientific Computing

Students visualize scientific data from a wide variety of sources, perform data analysis and dimensionality reduction using clustering techniques, understand system dynamics through differential equation approximation and agent-based modeling, construct probabilistic Monte-Carlo simulation models, and optimize continuous and discrete problems with local search techniques. Topics may include Markov models, bioinformatics, and signal processing. Each assignment requires writing a clear and coherent data analysis report that properly characterizes legitimate conclusions to be drawn from the data. Prerequisite: MATH 130 and CSCI 150

MATH 130 and CSCI 150
Writing Level 2 W2
CSCI 320

Operating Systems & Concurrency

A study of the three major concepts of a modern operating systems: virtualization, concurrency and persistence. Topics include the memory hierarchy (including caching and virtual memory), memory managment, processes, processor scheduling, address spaces, threads, the critical section problem, locks, sockets, file systems, and system performance analysis. Prerequisites: CSCI 151

CSCI 151
CSCI 335

Artificial Intelligence

An introduction to the design, analysis, implementation, and application of classical and contemporary algorithms in artificial intelligence. Topics include intelligent robot behavior, theorem-proving systems, heuristic search, alpha-beta search, metaheuristic optimization, neural networks, and machine learning. Prerequisite: CSCI 151

CSCI 151
Writing Level 2 W2
CSCI 340

Database and Web Systems

A study of designing and using a database management system (DBMS) and of developing Web applications. Topics include HTML, CSS, the JavaScript language, relational database theory, techniques for supporting ACID properties, and frontiers in database research. As part of a large team, students design and develop a system using both Web and mobile front ends that interacts with a DBMS using SQL. Prerequisite: CSCI 151

CSCI 151
Service to the World SW
CSCI 352

Scalable Software

Introduction to the computer science concepts necessary for the development of large software systems. Further exploration of object-oriented development, testing, and version control techniques introduced in CSCI 151. Emphasis placed on user-centric interface design and writing precise requirements. Projects incorporate relevant technologies for modern software design, including network programming, databases, and mobile devices. Assignments emphasize the integration of multiple concepts in the context of developing realistic software applications. Students complete several projects in teams. Prerequisite: CSCI 151

CSCI 151
CSCI 360

Programming Languages

In this hands-on course, students develop programming language design and implementation skills through a number of examples, using the Haskell progamming language (no prior experience with Haskell is assumed). Topics covered include parsing, type checking, first-class functions, interpreters, abstraction, compositionality, embedded domain-specific languages. As a final project, each student creates and implements a domain-specific language of their own design. Prerequisite: CSCI 151

CSCI 151
CSCI 365

Functional Programming

An in-depth, hands-on introduction to functional programming in Haskell. Topics include algebraic data types and pattern matching, recursion, induction, folds, lambda calculus, laziness, functions, and monads. The last few weeks of the semester focus on computer-checked formal proofs, exploring the deep connection between functional programs and formal logic. Prerequisites: CSCI 150 and one of MATH 240 or MATH 290

CSCI 150 and one of MATH 240 or MATH 290
CSCI 370

Interactive Game Development

An introduction to contemporary tools and algorithms for building interactive games. Students will learn fundamental design mechanics and implement a substantial development project. Topics may include steering and flocking behavior, path finding algorithms, finite state machines, behavior trees, alpha-beta pruning, Monte Carlo Tree Search, shaders, 3D modeling, animation, procedural content generation, and the intersection of games and society. Prerequisite: CSCI 151

CSCI 151
CSCI 380

Theory of Computation

Covers basic topics in automata, computability, and complexity theory, including: models of computation (finite automata, Turing machines and RAMs); regular sets and expressions; recursive, recursively enumerable, and non-recursively enumerable sets and their basic closure properties; complexity classes; determinism vs. non-determinism, with and without resource bounds; reductions and completeness; practice with NP- and P-completeness proofs; and the complexity of optimization and approximation problems. Prerequisite: MATH 240

MATH 240
CSCI 382

Algorithms & Prob SolvingParadigms

Introduction to algorithm design strategies that build upon data structures and programming techniques introduced in earlier courses. Strategies discussed include brute-force, divide-and-conquer, dynamic programming, problem reduction, and greedy algorithms. Topics covered include graph traversal and shortest paths, string matching, searching, sorting, and advanced data structures such as balanced search trees, heaps, hash tables, state machines, and union-find structures. The course includes an introduction to complexity theory and the complexity classes P and NP. Prerequisites: CSCI 151 and MATH 240

CSCI 151 and MATH 240
CSCI 397

IndSt:Biology Teaching Games

In this course intended for computer science minors, the student completes a semester-long project investigating the relationship of the student's major with computing. Typically, this involves developing software to solve a computational problem in the major discipline. This course must be taken as an independent study, supervised by a computer science faculty member in consultation with a faculty member in the student's major discipline. Prerequisite: CSCI 151

CSCI 151
Special Projects SP
CSCI 410

Senior Seminar-WII

Focuses on written and oral communication concerning computing, with a secondary emphasis on quantitative performance analysis and reading and research skills. Among the written assignments will be design documents and user documentation; a research paper and presentation will be the culminating assignments. Fundamental communication skills will receive special attention. Prerequisite: Senior standing.

Senior standing.
Writing Level 2 W2
CSCI 490

Computer Science: Advanced Topics

A topics course in computer science. This course can be repeated for additional credits as long as the section topics are different. Recent section topics include Interactive Game Development, Functional Programming, Artificial Intelligence, Distributed Computing. Consult the online course schedule for information about the topics currently scheduled to be taught. Prerequisite: Consent of instructor

Consent of instructor
Back to Program Course Listings

Question about the Catalog?