Catalog 2024-2025

Mathematics and Computer Science

Teaching Faculty

Professors Camfield, Ferrer, and Goadrich (chair)
Associate Professors Downes and Yorgey
Assistant Professor Ray
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, Computer Science, and Data Analytics. 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. Students in either major may minor in Data Analytics.


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. Students who studied calculus before enrolling in Hendrix College may receive course credit for MATH 130 Calculus I  if they take MATH 140 Calculus II  with consent of the instructor and pass it with a grade of or better. Alternatively, students may receive course credit for MATH 140 Calculus II if they take MATH 230 Multivariable Calculus or MATH 260 Differential Equations with consent of the instructor and pass it with a grade of or better. Students who studied programming before enrolling in Hendrix College may receive course credit for CSCI 150 Foundations of Computer Science (w/Lab) if they take CSCI 151 Data Structures (w/Lab) with consent of the instructor and pass it with a grade of C or better.

 

AP Credit

Mathematics

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

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

11 courses distributed as follows:

 

  • CSCI 150 Foundations of Computer Science (w/Lab)
  • CSCI 151 Data Structures (w/Lab)
  • MATH 240 Discrete Mathematics
  • CSCI 382 Algorithms
  • One of the following courses studying hardware & software interaction: 
          CSCI 320 Operating Systems & Concurrency
          CSCI 322 Computing Systems Organization
  • One of the following courses studying complex abstractions: 
          CSCI 335 Artificial Intelligence
          CSCI 360 Programming Languages
  • One of the following courses designing and implementing software as part of a team: 
          CSCI 340 Database and Web Systems
          CSCI 352 Mobile Software Development
          CSCI 370 Interactive Game Development
  • One of the following courses on mathematical foundations of computing
          CSCI 285 Scientific Computing
          CSCI 365 Functional Programming
          CSCI 380 Theory of Computation
          MATH 270 Linear Algebra
          MATH 335 Geometry
          MATH 365Mathematical Models
  • Two additional courses chosen from:
    • Any CSCI course numbered 200 or above (not used for other requirement above)
    • Math 130 Calculus I
  • CSCI 410 Senior Seminar   

 

Note(s):

Those preparing for graduate studies in Computer Science should take MATH 140 Calculus II, MATH 270 Linear Algebra, and MATH 310 Probability and Statistics. It is highly recommended to take CSCI 320 Operating Systems & Concurrency, CSCI 360 Programming Languages, and CSCI 380 Theory of Computation. It is also important to take additional upper-level courses in computing topics that they wish to pursue in graduate school.

     

    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 course that meets biweekly to guide students through the process of developing a senior undergraduate research project. The undergraduate research portfolio (earning UR Odyssey Credit) 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 is determined collectively by the department faculty.

    Computer Science

    The Senior Capstone Experience for the computer science major requires the completion of a substantial computing project. Projects may involve software development, writing a literature review, or creating educational materials for particular topics or technologies. These projects are normally completed as part of the required CSCI 410 Senior Seminar course, under the supervision of the course instructor. The capstone grade for each student is 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 is undertaken in close collaboration with a faculty member from the department. Each project culminates 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 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 Applied Mathematics

    6 courses distributed as follows:

    • CSCI 150 Foundations of Computer Science (w/Lab)
    • MATH 130 Calculus I
    • MATH 140 Calculus II
    • One course chosen from: 
                CSCI 285 Scientific Computing
                MATH 310 Probability and Statistics
                MATH 365 Mathematical Models
    • Two additional courses chosen from the previous list or from:  
                MATH 230 Multivariable Calculus
                MATH 260 Differential Equations
                MATH 270 Linear Algebra

     

    Notes(s):

    With departmental approval, other courses (such as MATH 490 Mathematics: Advanced Topics ) may be substituted for courses in the above electives.

     

     

    Minor in Computer Science

    6 courses distributed as follows:

    • CSCI 150 Foundations of Computer Science (w/Lab)
    • CSCI 151 Data Structures (w/Lab)
    • 1 CSCI course numbered 300 or above 
    • 3 additional courses chosen from:
      • Any additional CSCI course (not used for other requirements above)
      • Math 130 Calculus I
      • Math 240 Discrete Mathematics

     

    Minor in Data Analytics

    6 courses distributed as follows:

    • CSCI 150 Foundations of Computer Science
    • 1 course from:
                BUSI 250 Principles of Statistics
                MATH 215 Introductory Statistics
                MATH 310 Probability and Statistics
                PSYC 290 Statistics
                SOCI 210 Social Statistics
    • 1 course from:
                CSCI 151 Data Structures
                CSCI 270 Computational Humanities
                CSCI 285 Scientific Computing
                CSCI 335 Artificial Intelligence
                CSCI 340 Database and Web Systems
                MATH 365 Mathematical Models
    • 2 elective courses from:
                ANTH 335 Geographic Information Science
                BIOL 480 Field Ecology
                BUSI 390 Accounting Information Systems and Database Management
                ECON 400 Econometrics and Forecasting
                ECON 430 Management Science
                One of the following: 
                    POLI 202 Empirical Research Methods
                    PSYC 295 Research Methods (w/Lab)
                    SOCI 335 Sociological Research Methods 
    • 1 additional course from the two previous lists

    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

     

    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

    Precalculus

    Covers domain, graphs, inverses, and compositions of functions, with particular attention given to exponential, logarithmic, and trigonometric functions. Emphasizes understanding and manipulating functions analytically, graphically, and numerically. Intended for students who wish to take MATH 130 Calculus I or CHEM 110 General Chemistry and are placed in MATH 120. 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

    This course is concerned with the fundamental ideas of calculus: the derivative as a rate of change, the integral as an accumulation of change, and the limit as the basic idea underlying both the derivative and the integral. Numerical, geometric, and analytic approaches to these ideas are emphasized throughout the course. Using the techniques of calculus to solve real-world problems is fundamental to the course. Students are introduced to partial derivatives and mathematics software. Students are expected to have prior familiarity with exponential, logarithmic, trigonometric, and rational functions.

    Natural Science Inquiry NS
    Quantitative Studies QS
    MATH 140

    Calculus II

    This course continues the study of calculus begun in MATH 130. Primary goals of the course are solving initial value problems, learning standard techniques of integration (integration by parts, trigonometric substitution, partial fractions), becoming familiar with Taylor polynomial approximations and Taylor series expansions of standard functions, and employing these ideas in real-world applications. Numerical, geometric, and analytic approaches to the fundamental ideas of calculus are emphasized throughout the course. Graphing calculators and mathematics software are fundamental tools. Prerequisite: MATH 130 or advanced placement

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

    Introductory Statistics

    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 does 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.

    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

    MATH 140
    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.

    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 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
    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
    MATH 335

    Geometry

    An investigation of various geometries. Topics include axiomatic systems, formal Euclidean geometry, non-Euclidean geometries such as spherical, hyperbolic, and projective, as well as geometric transformations. Prerequisites: 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
    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: Any MATH course numbered 230 or higher

    Any MATH course numbered 230 or higher
    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.

    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 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
    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 management, processes, processor scheduling, address spaces, threads, the critical section problem, locks, sockets, file systems, and system performance analysis. Prerequisites: CSCI 151

    CSCI 151
    CSCI 322

    Computing Systems Organization

    A study of the layers of abstraction composing the design of modern computing systems. Topics include numeric representation, digital logic, memory circuits, CPU design, machine and assembly language, the program stack, virtual machines, compilers, assemblers, memory management, and memory-mapped I/O. Prerequisite: CSCI 151

    CSCI 151
    CSCI 335

    Artificial Intelligence

    In this course, students implement and employ machine learning and search algorithms to create software to solve problems in three major application areas of Artificial Intelligence: action selection, natural language processing, and image classification. Writing assignments emphasize careful scientific analysis of student-conducted AI experiments and analytical thinking about AI applications. Prerequisite: CSCI 151

    CSCI 151
    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

    Mobile Software Development

    Introduction to the computer science concepts necessary for the development of software systems targeted at mobile devices. Further exploration of object-oriented development, and testing concepts introduced in CSCI 151. Emphasis is paced on user-centric interface design and writing precise requirements. Projects also incorporate network programming and mobile device sensor data. Assignments emphasize the integration of multiple concepts when developing realistic software applications. Several projects are completed 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

    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

    Cross-Disciplinary Project

    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

    A combination of readings, writing assignments, oral presentations, and independent project work integrates the lessons from each student's undergraduate studies. Students create and revise project documentation, assess the content of formal writing about computing subjects, investigate ethical issues in computing, and complete an independent capstone project. Students also prepare themselves for professional work by resume writing and the creation of a professional portfolio. Prerequisite: CSCI 151

    CSCI 151
    CSCI 481

    Community Software Development

    In this course, students support the missions and workflows of community partners by developing and deploying software industry tools and practices. Projects include interactive websites that organize and share information to manage complex systems, mobile applications to connect users with resources and information, and educational games to promote empathy and learning. Instructor approval is required prior to enrollment. A student receives one course credit after two semesters of participation. Students can retake this course for a total of two course credits. Prerequisites: CSCI 340, CSCI 352, or CSCI 370, and permission of instructor

    CSCI 340, CSCI 352, or CSCI 370, and permission of instructor
    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?