COMP 121 Computing in the Arts and Sciences
(4 credits)
Bogaerts, Steven and Shelburne, Brian
Prerequisite: Math Placement Level 22 or higher
This introductory course is intended for non-majors, and assumes little computer experience beyond using word processing software. COMP 121 is designed to help students become familiar with microcomputers and their use in problem-solving and their impact on society. Students will create spreadsheets, databases, and will also learn a subset of an object-oriented programming language.
The course meets for four hours each week, and includes extensive time for hands-on practice. The final grade will be based on labs, homework, and exams. Mathematical-reasoning intensive.
COMP 150 Computer Programming I
(5 credits)
Burke, Kyle
Prerequisite: Math Placement Level 22 or higher
Introduction to computer science through the use of programming in the Python language. Designed primarily for the student who expects to take further courses in computer science. Also very valuable for any student who expects to do programming that is related to another discipline (e.g., in the sciences). This course is required for the Computer Science major and minor, the Mathematics major and minor, and the Computational Science minor. It is also recommended or required by certain science programs.
The course stresses the development of algorithms and data abstraction to solve problems. It begins with basic algorithm design, progresses through imperative programming and finishes with most of the features of object-oriented programming. Students write 10-12 programs. The class has three 1-hour lecture/demonstrations plus a 2-hour lab per week. Much of the work for the course is done outside of class using the laboratory computers to write, debug and run programs.
The course grade is based on programming assignments, lab exercises, in-class tests, and a final. Mathematical-reasoning intensive.
COMP 250 Computer Programming II
(5 credits)
Bogaerts, Steven
Prerequisite: COMP 150
This course is an intensive study of program design, abstract data types and object-oriented programming in Java using data structures common in computer science. The course begins with the concept of abstract data types and how they may be implemented using object-oriented mechanisms. We then examine common data structures such as linked lists, stacks, queues, priority queues, trees and graphs, along with operations appropriate to each structure (e.g., insertions and deletions, backtracking, tree traversals). Applications are drawn from the fields of operating systems, compilers, and simulations, among others. Students will be expected to design and implement moderately sized programming projects on their own, but there may be an opportunity for some small group projects.
The course will meet three times a week for lecture, and once each week for a structured lab. Students are expected to do significant work outside of class. Course grades will be based on programming assignments and in-class tests. Great emphasis will be placed on good programming style. Writing intensive. Mathematical-reasoning intensive.
COMP 260 Computational Models and Methods
(5 credits)
Stahlberg, Eric
Prerequisites: MATH 131 or MATH 201 and COMP 150 or equivalent with permission of the instructor
Introduction to the principles and approaches of using computational science through the use of problem solving methodologies. This includes the understanding, development, and use of mathematical models as well as their effective computer implementation. Approximately fifteen approaches across eight categories (continuous and discrete, static and dynamic, empirical and formulated) will be investigated. These models are adapted from a variety of scientific and real-world scenarios. Simulation and optimization techniques will also be discussed and used. Each student will undertake a realistic modeling project as part of the course. Laboratory required. This course is cross-listed as MATH 260. Students may enroll in either COMP 260 or MATH 260, but not both. Mathematical-reasoning intensive.
COMP 265 Principles of Programming Languages
(4 credits)
Burke, Kyle
Prerequisites: COMP 250
This course emphasizes the principles and programming paradigms (functional, logical, object-oriented, event-driven, high-performance) that govern the design and implementation of contemporary programming languages. Topics include language syntax and translation, data types and operations, sequence control, data control, subprograms, and environments. Languages to be studied include those taken from the following: Ada, APL, C, C++, Chapel, FORTRAN, Java, Modula-2, Pascal, Prolog, Scheme and Smalltalk.
Grades are based upon assignments, reports, presentations, and exams. Mathematical-reasoning intensive.
COMP 350 Artificial Intelligence
(4 credits)
Bogaerts, Steven
Prerequisites: COMP 250
Some of the primary areas of Artificial Intelligence (AI) will be examined, such as: Knowledge Representation, Language/Speech Processing, Vision, Search, Deductive Systems, Expert Systems, Robotics, Machine Learning and Neural Networks. These will be investigated in terms of their applications and the underlying AI techniques necessary to implement them. Python will be used as the primary implementation language. Some philosophical and humanistic issues of AI will also be addressed.
The class will meet three times a week. Grades will be based on assignments, projects, reports and exams. Mathematical-reasoning intensive.