Mathematics
MATH 1006: Mathematics for the Liberal Arts Student (3 cr.) This course is intended as an invitation to anyone who, while not interested in developing a technical facility in calculation, is interested in gaining an appreciation of the methods and scope of mathematics. The emphasis will be on topics not usually covered in a general algebra  trigonometry sequence. The approach will be conceptual, rather than computational. (Spring)
MATH 1012: Introduction to College Math (4 cr.) The purpose of the course is to broaden and strengthen the student's high school mathematics background and to prepare for the study of calculus. Topics will include algebra and functions including exponential, logarithmic and trigonometric functions. (Fall) (Spring)
MATH 1030: Calculus I (4 cr.) Topics in this course will include functions, limits, and continuity; derivatives of polynomials, products, quotients, trigonometric, and implicit functions; applications to related rates, maximumminimum problems and graphing; antiderivatives, the Fundamental Theorem of Calculus, and area problems. A computer symbolic algebra component is included. Prerequisite: four years of high school mathematics or Introduction to College Math or its equivalent. (Fall) (Spring)
MATH 1032: Calculus II (4 cr.) Topics in this course will include applications of integrals to volumes of revolution, differentiation and integration of logarithmic, exponential, and inverse trigonometric functions, indeterminate forms, techniques of integration, improper integrals, sequences and series, Taylor's Theorem, parametric equations, and polar coordinates. A computer symbolic algebra component is included. Prerequisite: Calculus I. (Fall) (Spring)
MATH 2021: Differential Equations (4 cr.) This course will discuss classification of types of differential equations, elementary and nonelementary solutions, solutions to first order differential equations, existence and uniqueness theorems, solutions by approximation methods, solutions to second order differential equations, series solutions, nth order differential equations. A computer symbolic algebra component is included. Prerequisite: Calculus II. (Spring)
MATH 2023: Fundamental Concepts of Mathematics (4 cr.) This course will discuss basic concepts of symbolic logic, axiomatic method, set theory, cardinality, and various mathematical systems. The emphasis of the course is the creation and understanding of mathematical proofs. Prerequisite: Calculus II. (Spring)
MATH 2030: Calculus III (4 cr.) This course will focus on threedimensional space, including the following topics: vectors, surfaces, planes and lines in threespace, partial derivatives and the gradient, vector functions, multiple integrals, line integrals, and Green's Theorem. A computer symbolic algebra component is included. Prerequisite: Calculus II. (Fall)
MATH 2075: Probability (3 cr.) This course provides an introduction to probability using the methods of calculus. Topics covered include: sample spaces, events as subspaces, probability axioms; binomial coefficients and counting techniques applied to probability problems; random variables (discrete and continuous), probability functions, density and distribution functions and special distributions; Poisson and normal distributions, the central limit theorem and law of large numbers. Corequisite: Calculus II. (Fall)
MATH 3008: History of Mathematics (4 cr.) A survey of some of the central ideas in the development of mathematics. The historical and mathematical context and content of these ideas will be studied along with the major figures responsible for their development. Prerequisite: Fundamental Concepts of Mathematics. (Every third year)
MATH 3031: Advanced Calculus (4 cr.) Emphasis of this course will be on basic concepts of analysis and techniques of proofs. Prerequisite: Calculus III. Corequisite: Fundamental Concepts of Mathematics. (Spring)
MATH 3034: Linear Algebra (4 cr.) This course will discuss vector spaces, linear independence and linear dependence of vectors, bases, subspaces, linear transformations, and representations of linear transformations using matrices. Other topics include determinants, nonsingular linear transformations, change of basis, rank of a matrix, orthogonal linear transformations, characteristic values and vectors of linear transformations, similarity and diagonal matrices, and orthogonal reduction of symmetric matrices. A computer symbolic algebra component is included. Prerequisite: Calculus II. Corequisite: Calculus III. (Fall)
MATH 3037: Number Theory (4 cr.) This course will consider basic properties of the natural numbers. Topics include divisibility, primes, congruences, quadratic residues, Gaussian sums, numbertheoretic functions, perfect numbers, distribution of primes, and also irrational, algebraic, and transcendental numbers. Prerequisite: Fundamental Concepts of Mathematics. (Every third year)
MATH 3040: Modern Algebra (4 cr.) Basic concepts and structures of modern algebraic systems. Topics covered include: sets, functions, groups and homomorphisms, rings and ideals, fields and field extensions, Galois theory of the roots of polynomials. Prerequisite: Fundamental Concepts of Mathematics. (Every third year)
MATH 3041: Introduction to Graph Theory (4 cr.) This course will discuss paths, cycles and properties of trees, planarity and duality, problems relating to the FourColor map theorem, diagraphs, traversal theory and network flows. Prerequisite: Fundamental Concepts of Mathematics. (Every third year)
MATH 3048: Complex Variables (4 cr.) This course studies the algebraic properties of complex numbers and the notion of an analytic function. Many examples of analytic functions are discussed. The Cauchy Integral Theorem is proved. The course also covers the Cauchy Integral Formula and its consequences, Taylor and Laurent series expansions and the residue theorem and its consequences. Prerequisite: Fundamental Concepts of Mathematics. (Every third year)
MATH 3060: Topology (4 cr.) An introduction to point set topology. Topics covered include: open sets, closed sets, compact sets in metric spaces and topological spaces. Prerequisite: Fundamental Concepts of Mathematics.
MATH 3077: Numerical Analysis (4 cr.) This course offers a study of some basic algorithms of numerical computation with emphasis on the theoretical foundations of the algorithms and various problems related to the practical implementations of the algorithms. Topics covered include: floating point representation, implications of finite precision and errors due to round off, solutions of equations using fixed point method, Newton's method and secant method, numerical integration and differentiation. Prerequisites: Calculus III and Programming and Multimedia in Java.
MATH 3097: Mathematical Logic (4 cr.) This course deals with propositional and predicate calculus, Gödel's completeness and incompleteness theorems, and undecidable problems. Prerequisite: Fundamental Concepts of Mathematics. (Every third year)
MATH 3997/3999: Senior Readings and Seminar (2 cr. each semester) A yearlong course for senior mathematics majors. In the first semester, students will read and summarize selected papers in mathematics. In the second semester, students will participate in a seminar presenting expanded versions of the papers read. (MATH 3997: Fall) (MATH 3999: Spring)
Computer Science
MAC 1000: Programming and Graphics in Visual BASIC (4 cr.) This course is an introduction to graphical application development using objectoriented techniques in Visual Basic for the Microsoft Windows operating system. It is intended for students with no previous programming experience. Topics include objectoriented design and programming, GUI object classes, flow control, 2D graphics, and collections. (Fall) (Spring)
MAC 1010: Programming and Graphics in Java (4 cr.) This course is an introduction to graphical application development using objectoriented techniques in Java in a visual environment. Topics include objectoriented design and programming, GUI object classes, flow control, 2D graphics, and collections. Computer Science majors are strongly encouraged to enroll in this course in the first semester of their freshman year, or immediately upon changing major to Computer Science. All other students are encouraged to first complete Programming and Graphics in Visual Basic (MAC 1000) if they have not had previous programming experience. (Fall) (Spring)
MAC 1075: Computers and Information Technology (3 cr.) This introductory level course is a survey of the computer hardware and software in current use. Topics include: data representation, storage devices, input/output devices, computer hardware, operating systems and application development techniques. Students learn to use a word processor, spreadsheet, database, and presentation manager. Students will create and post a website. (Fall) (Spring)
MAC 2010: Programming and Multimedia in Java (4 cr.) This is a continuation of the objectoriented, graphical application development in Java, begun in Programming and Graphics in Java (MAC 1010). Advanced objectoriented features of Java are covered, including multithreading, file I/O, and object classes used for multimedia applications. (Fall) (Spring)
MAC 1020: Intro to Creating Android Apps A course that introduces students to App Inventor, a tool that graphical tool that allows easy creation of applications (apps) for handheld devices running the Android OS (operating system). Due to the ease of app creation, the course encourages student creativity, especially among students who already own and use an Android device (e.g., smartphone). This is a fun course for those with little or no experience yet who are interested in computer programming
MAC 2015: Database Design and Construction (3 cr.) This course is an introduction to techniques used for structuring data to be stored in various devices. Theory of database design and the implementation of such designs is studied. Topics include: the definition and normalization of database designs, the SQL data design language (DDL), and the manipulation of databases designed in SQL via servlets written in the Java programming language. Prerequisite: Programming and Multimedia in Java (MAC 2010) (Fall) (alternate years)
MAC 2017: Building Search Engines and Other Software Tools (3 cr.) This course offers a formal study of the basic structures used for storing data and an analysis of the algorithms, which act on data structures. It builds on the material presented in Programming and Graphics in Java and Programming and Multimedia in Java. This material is made more rigorous with an emphasis on the analysis and design of efficient algorithms. Topics include review of basic data structures, basic graph theory with algorithms for finding paths and spanning trees, techniques of design and analysis for (internal and external) sorting, merging and searching, algorithms for hashing, garbage collection and compaction. Prerequisite: Programming and Multimedia in Java (MAC 2010) (Fall) (alternate years).
MAC 2020: Introduction to Mobile Robotics (3 cr.) This course is an introduction to programming autonomous mobile robots, using a development environment on a workstation, and then downloading/executing the developed programs on the robot. Students are tutored in the robot design as well as in the basics of the development environment. Students then program the robots to perform different tasks, such as wallfollowing and light tracking. Lastly, students program the robots for a multirobotic competition. Prerequisite: Programming and Multimedia in Java or a grade of B or better in Programming and Graphics in Java. (Intersession)
MAC 2021: Internet Concepts and Web Page Construction (3 cr.) This course offers a formal introduction to the internet. Topics include how the internet works, web page construction using HTML code and HTML editors. The course covers Java script programming. Note: This course does not count for major credit. Prerequisites: Computers and Information Technology and Programming and Graphics in Visual BASIC or Programming and Graphics in Java.
MAC 2035: Programming Languages (3 cr.) This course is an introduction to the formal study of programming language specification and analysis. Several programming languages (both compiled and interpreted) will be studied in terms of their features and limitations. Topics include formal language definition (using BackusNaur Form and Java as an example), a comparison of several languages in terms of data types and structures, control structures and runtime considerations. Prerequisite: Programming and Multimedia in Java (MAC 2010) (Spring) (alternate years).
MAC 2045: Computer Systems Architecture and Programming (3 cr.) This course is an introduction to computer architecture and its relation to programming in C on the UNIX operating system. General concepts and techniques that apply to a broad range of computers will be covered. These include: representation of data and computer arithmetic, the organization and structuring of the major hardware components of computers, and methods of I/O. Prerequisite: Programming and Multimedia in Java (MAC 2010) (Spring) (alternate years).
MAC 2055: Theory of Computation (3 cr.) This course provides an introduction to the theory of computation, which essentially deals with the question: What are the fundamental capabilities and limitations of computers? Topics include: regular languages, contextfree languages, the ChurchTuring thesis, decidability, reducibility, time complexity, space complexity, intractability. Prerequisite: Programming and Multimedia in Java (MAC 2010).
MAC 2085: Discrete Structures (3 cr.) This course provides an introduction to fundamental algebraic, logical and combination concepts from mathematics with applications to various areas of computer science. Topics covered include sets, relations, functions and induction, Boolean algebra and introduction to graph theory. (Spring)
MAC 3010: Introduction to Compiler Design (3 cr.) This course provides a formal treatment of programming language translation and compiler design concepts. Topics covered include: organization of a compiler including symbol tables, lexical scan, syntax scan, object code generation and optimization techniques. Prerequisite: Programming and Multimedia in Java (MAC 2010). Corequisite: Computer Systems Architecture and Programming (MAC 2045). (every third year)
MAC 3011: Creating Android Apps With Java An elective course for Computer Science (CS) majors. The course uses the Java programming language along with the Eclipse Integrated Development Environment (IDE) along with the Google Android Developer Tools (ADT) plugin for Eclipse to develop applications (apps) for devices using the Android operating system (OS). In this course, students specifically build apps such as games, and apps using wireless communication. Prerequisites: MaC 1020, MaC 2010
MAC 3012: Internet Programming (3 cr.) Topics in this advanced course include internals of the internet, review of HTML coding, JavaScript programming, CGI programming. Prerequisite: Programming and Multimedia in Java (MAC 2010) or Internet Concepts and Web Page Construction (MAC 2021). Corequisite: Current 2000 level computer science course. (every third year)
MAC 3014: Building Computer Games (1.5 cr.) This course begins with the introduction of fundamental game theory, then shows the application of this theory to the construction of computer games using the Java programming language, of which prior knowledge is assumed. Game theory includes such concepts as the design of game sprites, as well as the realization of fundamental animation. Prerequisite: Programming & Multimedia in Java (MAC 2010) (every third year)
MAC 3016: Building Cell Phone Games (1.5 cr.) In this followup to How to Build Computer Games, students apply game theory to constructing games for mobile devices (e.g., Blackberry, Palm OS, and Javaenabled cell phones). The course also includes an introduction to the Java Mobile Edition (ME), assuming a prior working knowledge of the Java programming language. Prerequisite: How to Build Computer Games (MAC 3XXX) (every third year)
MAC 3020: Introduction to Operating Systems (3 cr.) The principles of control program function and operation will be studied with examples of one or more specified operating systems. Topics covered include storage management, processor management, device management, file management, system management and system configurations. Prerequisite: Programming and Multimedia in Java (MAC 2010). (every third year)
MAC 3021: Intro to FPL Using Haskell (1.5 cr.) Functional programming language gives a simple model of programming: one value, the result, is computed on the basis of others, the inputs. Because of the simplest foundation, functional language gives the clearest possible view of the central idea in modern computing, including abstraction (data abstraction), polymorphism, and overloading. Functional programs are shorter, cleaner and faster to develop than their imperative counterparts because of the high level of abstraction. Haskell is not just a good "teaching language": it is a practical programming language used in a number of realworld projects. Prerequisite: Programming & Multimedia in Java (MAC 2010) (every third year)
MAC 3024: Algorithms in Haskell (1.5 cr.) Functional programs tend to be shorter, clearer and faster to develop than their imperative counterparts. This contributes to a better understanding of the algorithm being implemented and makes it possible to explore alternative solutions more rapidly. This module covers traditional topics in sorting, searching, graph algorithms, as well as algorithm design strategies: divideandconquer and dynamic programming. The emphasis is on intuitive and pragmatic program development techniques. Prerequisite: Intro to FPL using Haskell (MAC 3021) (every third year)
MAC 3042: Advanced Topics in Computer Programming This course covers advanced features of the Java programming language taught in the courses Programming and Graphics in Java (MAC 1010) and Programming and Multimedia in Java (MAC 2010). Possible course topics include: network (socketbased) programming, concurrent programming, distributed computing, webbased applications, and mobile applications. Prerequisite: Programming and Multimedia in Java (MAC 2010)
MAC 3050: Introduction to Parallel Programming (3 cr.) This course introduces students to programming multi processor architectures. However, rather than program a single computer with multiple processors, the PVM architecture is used, which simulates a multiprocessor machine using a network of single processor machines. Programs for PVM are written in an augmented version of the C programming language. Prerequisite:Programming and Multimedia in Java. (MAC 2010) (every third year)
MAC 3054 Web Development in Perl I (1.5 cr.) This course provides an introduction to the code syntax of Perl, an interpreted programming language that combines the flexibility of generalpurpose programming languages such as C or Java. The result is a language especially suited to performing complex searching and manipulation of text. This course teaches students how to utilize Perl in terms of syntax, the basics of regular expressions and Perl data types. Prerequisite: Programming and Multimedia in Java (MAC 2010) (every third year)
MAC 3058 Web Development in Perl II (1.5 cr.) Perl has enjoyed recent popularity for programming World Wide Web electronic forms and generally is considered as the glue and the gateway between systems, databases, and users. This course introduces advanced topics such as the access and manipulation of files, database connectivity and debugging techniques. Prerequisite: Web Development in Perl I (MAC 3054) (every third year)
MAC 3060: Graphics for Computer Science Majors (3 cr.) Topics covered will include: representation of twoand threedimensional objects, transformation and rotations, hiddenline algorithms, and orthographic and perspective projections. Prerequisite: Programming and Multimedia in Java (MAC 2010).
MAC 3062 Building Intelligent Software: Knowledge Engineering (1.5 cr.) Historically, Knowledge Engineering has been one of the most successful areas in the field of Artificial Intelligence. Knowledge Engineering involves the development of intelligent databases (knowledge bases), which can then be used as consultation/help systems (e.g., the infamous MS Office paper clip). Students will be introduced to knowledge engines, which they will then use to build their own custom knowledge bases. Prerequisite: Programming and Multimedia in Java (MAC 2010) (every third year)
MAC 3065 Intelligent Robots (1.5 cr.) This course introduces students to programming autonomous, mobile robots. It begins with an introduction to the programming environment, which the students will then use to program the mobile robots. Once students, working in teams of two have developed a program implementing the behavior of the robot, the program is downloaded to the robot via a data connection. The connection is then severed, allowing the robot to autonomously use its programmed behavior to interact with its environment and carry out its predetermined task. Prerequisite: Programming and Multimedia in Java (MAC 2010) (every third year)
MAC 3998 Senior Evaluation (3 cr.) A thesis written under the direction of a department faculty member.
