Computer Science at Bluffton College


The Computer Science major is designed to provide students with a current, comprehensive knowledge of computer science, with a strong problem-solving orientation designed to prepare students for professional careers or graduate study in this ever-growing field. This is accomplished by placing the fundamental computer science core subjects within a framework of mathematics, science and the standard liberal arts program. The computer science core subject curriculum is aimed at developing competency through hands-on experiences. The mathematics and science components allow development of the technical background one expects a computer scientist to possess. The liberal arts component of the program provides the essential non-technical skills necessary for a successful career.

Major (60 hours)
Computer science courses:

CPS 108 Computer Programming (3)
CPS 112 Data Structures & Algorithms (3)
CPS 220 Introduction to Object-Oriented Programming (3)
CPS 221 Applications in Object-Oriented Programming (3)
CPS 320 Numerical Analysis (3)
CPS 322 Database Systems (3)
CPS 331 Programming Languages and Compilers (3)
CPS 333 Systems Programming (3)
CPS 341 Operating Systems (3) CPS 343 Network and Systems Administration (3)
CPS 350 Computer Organization and Assembly Language (3)
CPS 352 Digital Electronics and Computers (4)

Mathematics courses:

MAT 135 Calculus 1 (5)
MAT 136 Calculus 2 (5)
MAT 220 Discrete Math (3)

Physics courses:

PHY 211 Physics for Science and Engineering I (5)
PHY 212 Physics for Science and Engineering 2 (5)

Minor (18-19 hours)
The Computer Science minor allows students desiring a computer background within another major to obtain a solid foundation in the field. Following the required core courses, students minoring in computer science are able to take as electives those upper level computer science courses that best fit their professional needs. This minor is not available to those students majoring in information systems.
 
Required computer science courses:

CPS 108 Computer Programming (3)
CPS 112 Data Structures & Algorithms (3)
CPS 220 Introduction to Object-Oriented Programming (3)
CPS 221 Applications in Object-Oriented Programming (3)
 
Two additional courses must be taken from the following list:
CPS 320 Numerical Analysis (3)
CPS 322 Database Systems (3)
CPS 331 Programming Languages and Compilers (3)
CPS 333 Systems Programming (3)
CPS 341 Operating Systems (3) CPS 343 Network and Systems Administration (3)
CPS 350 Computer Organization and Assembly Language (3)
CPS 352 Digital Electronics and Computers (4)

Courses
CPS 100 Using Microcomputers
(2)
Designed to provide familiarity with hardware, software and functions of microcomputers in a hands-on environment. Coverage includes introduction to word processing, spreadsheets and web page design. Offered every term.

CPS 105 Introduction to Computers (3)
This course is an introduction to computers suitable for all students. No previous experience with computers is required or assumed. The lecture will describe what a computer is, what it can do and how to make it work. Emphasis is placed on the social and technical impacts of computers on society.

CPS 108 Computer Programming (3)
This course is an introduction to computer programming that emphasizes the application of fundamental principles to problem solving and programming techniques. Structured programming concepts using the C programming language will be stressed. Some familiarity with computers is assumed.

CPS 112 Data Structures and Algorithms (3)
This course is a study of the design of data structures and the analysis of the algorithms used to manipulate them. The fundamental concepts studied in this course serve as a foundation for the advanced computer science concepts studied in later courses. Topics include data types, records, recursion, queues, stacks, linked lists, trees, graphs, searching, sorting, algorithm complexity and classes of algorithms. Software engineering principles are introduced. Prerequisite:
CPS 108.

CPS 220 Introduction to Object-oriented Programming (3)
This course is an introduction to the object-oriented programming paradigm. Emphasis is placed on the Java programming language; methods, objects, graphics, graphical user interfaces and components, applets and applications and program development tools. Prerequisite:
CPS 112.

CPS 221 Applications in Object-oriented Programming (3)
This course focuses on the application of the object-oriented programming paradigm using Java. Areas to be covered include multithreaded applications, internationalization and security issues, graphics and animation and simulation. Students will work on a term project in their area of interest. Prerequisite:
CPS 220.

CPS 320 Numerical Analysis (3)
This course focuses on the applications of the computer in science and mathematics. Topics include calculation of functions, roots of equations, integration, fourier analysis, differential equations, monte-carlo methods and curve fitting. Lectures will present the concepts of the numerical analysis topics covered and their corresponding algorithms; students are expected to be familiar with the underlying mathematical concepts and the programming methodology necessary for algorithm implementation. Prerequisites:
CPS 108 and MAT 136. Offered alternate years.

CPS 322 Database Systems (3)
This course has its primary focus on the relational model for database organization. Topics include the relational data structure, relational algebra, normalization, integrity, recovery, concurrency and distributed databases. Assignments include team projects involved in the various stages of information systems development: definition, design, implementation, testing and documentation. Prerequisite:
CPS 112. Offered alternate years.

CPS 331 Programming Languages and Compilers(3)
This course studies the design and implementation of modern programming languages, compilers and interpreters. Concepts of data representation, storage allocation, scope, code generation, lexical analysis and parsing of context-free grammars are examined. Students design and implement a simple compiler. Prerequisite:
CPS 221. Offered alternate years.

CPS 333 Systems Programming (3)
This course focuses on the writing of programs that utilize operating system services in order to perform a task. Topics include low-level and standard I/O routines, files, signals, processes, inter-process communication, sockets and Internet protocols. Shell programming is also introduced. Students will write applications for both Windows and Unix platforms. Prerequisite:
CPS 221. Offered alternate years.

CPS 341 Operating Systems (3)
Students are provided with an examination of the characteristics of modern operating systems and its related software. Topics include process and memory management, scheduling issues, performance metrics and concurrent programming. Case studies of various operating systems are conducted. Prerequisite:
CPS 220 or junior standing. Offered alternate years.

CPS 343 Network and Systems Administration (3)
This course deals with issues involving both network configuration and systems administration. The OSI layered reference model will serve as an outline to the course. Topics include the physical architecture of computer networks, networking protocols and services, resource management, directory services, system and network security/privacy and network and system monitoring. A special emphasis will be placed on understanding TCP/IP and various related services (DNS, DHCP, SMTP, HTTP, LDAP). In addition, Windows NT Server will frequently be used as a case study. Prerequisite:
CPS 341. Offered alternate years.

CPS 350 Computer Organization and Assembly Language (3)
Students are provided with an introduction to computer hardware organization, the instruction execution cycle and the relationship between machine/assembly languages and high-level programming languages. The Intel 8086 family of microprocessors is used to provide opportunities for machine and assembly language programming. Architectural and organizational issues are also addressed. Prerequisite:
CPS 220 or junior standing. Offered alternate years.

CPS 352 Digital Electronics and Computers(4)
This course presents a study of digital electronics and an overview of its use in computers. Topics include logic, logic integrated circuits, processors, memory, processor-peripheral communication and instrument interfacing. Prerequisites:
CPS 350 and PHY 212. Offered alternate years.

CPS 390 Independent Study in Computer Science (credit varies)
By arrangement.

CPS 399 Special Topics in Computer Science (credit varies)
By arrangement.


Modified 10/5/00