Freshman Level Courses
CSCI 106 - Computer Applications in Business - In this course students will develop problem solving skills using computer applications found in a business environment. Several applications tools will be considered, but the emphasis will be on spreadsheet and database applications. Students will also gain an understanding of basic computer organization and social issues surrounding the use of computers. Three hours. Staff.
CSCI 107 - Introductory Web Design and Programming - This course serves as an introduction to web page design techniques and concepts and to human-computer and principles guide the development of web pages using basic XHTML and more advanced features such as tables, frames, forms, and image maps. Also introduced are style sheets and the basics of storing and displaying graphics including file formats for graphics files, the creation of images for the web, and optimization of color and size for display on browsers. The course includes a study of dynamic web pages using client-side programming with JavaScript. Three hours. Staff.
CSCI 108 - Robot Ways: Exploring Robot Design and Programming - In this course students are introduced to computing, engineering and programming principles as they design, assemble and program robots using LEGO parts, sensors, motors, and firmware. Fundamental robotics skills are learned in the context of building and modifying a number of simple robots. Each of these robots is programmed and built to accomplish specific tasks. The students learn by augmenting both the robot structure and the code. The course includes at least two projects. Working in small teams, students build and program robots of their own design to satisfy the requirements of a project. Three hours. Staff.
CSCI 111 - Introduction to Computer Science I - This course provides an introduction to the basic ideas of algorithmic problem solving and object-oriented programming techniques. Topics discussed include concepts in software engineering, object-oriented problem solving, programming control structures, object-oriented design issues, class definition and instantiation fundamentals, elementary sorting, elementary file input/output, elementary collection classes, and basic abstraction mechanisms. A weekly three-hour laboratory will exercise and enhance student understanding of the principles covered in the lectures. Four hours. Staff.
CSCI 112 - Introduction to Computer Science II - A continuation of CSCI 111 in which software development skills are improved and refined, this course places emphasis on solving more complex problems using object-oriented design. Topics covered may include: algorithmic efficiency (an introduction to big-Oh notation), efficient sorting techniques (e.g., merge sort, quick sort), recursion, and collection classes (lists, stacks, queues, priority queues, binary search trees, hash tables) and related applications. A weekly laboratory will exercise and enhance student understanding of the principles covered in the lectures. Prerequisite: CSCI 111 or permission of the instructor. Four hours. Staff.
Sophomore Level Courses
CSCI 211 - Computer Organization - This course provides a study of the hardware and low-level software of a computer system. Topics include data representation, digital logic circuitry, memory organization, basic interfacing concepts, machine language, and assembly language programming. A weekly laboratory will exercise and enhance student understanding of the principles covered in the lectures. Prerequisite: CSCI 112 or permission of the instructor. Four hours. Staff.
CSCI 212 - C and UNIX - This course involves students significantly with the structure of a UNIX-based operating system, and the programming language, C, used to implement the system. Through the investigation of UNIX, students will learn first principles of system programs and structures. Programming projects, written in C, will focus on operating system features and interface with the system. Topics will include the UNIX shell, system structures, system calls, program development, signals, process management, interprocess communication. Prerequisites: CSCI 211. Offered alternate years. Four hours. Staff.
CSCI 214 - Algorithms and Programming: Design, Structure and Analysis - This course melds together a discussion of software engineering, algorithms, and analysis of algorithms and programmed systems. It examines algorithms from a variety of perspectives including those of graph theory, data structures, algorithm-development approaches (including divide-and-conquer, dynamic programming, branch-and-bound, backtracking, and greediness), and analysis techniques for examining the space and time complexity of the algorithms. Continuing the discussion begun in prerequisite courses, this course expands coverage of software engineering concepts and techniques necessary to evaluate the design, implementation, and quality of a system, including expanded discussion of design patterns. Prerequisite: CSCI 112 or permission of the instructor. Recommended: MATH 220. Four hours. Staff.
Junior Level Courses
CSCI 310 - Theory of Computation - A study of some of the theoretical underpinnings of computer science. Topics include finite automata, formal languages, pushdown automata, Turing machines, and computability. Students entering this course will be expected to understand techniques of mathematical proof. Prerequisites: MATH 220, CSCI 214. Three hours. Staff.
CSCI 312 - Programming Languages - A comparative study of the organization and implementation of a variety of programming languages and language features, this course includes discussion of data types and data structures, control structures, subprograms, storage management, formal description of syntax, and semantics. The relation between language structure and good programming techniques will be covered. Languages representing the different programming paradigms will be studied, compared, and evaluated. Prerequisites: CSCI 211 and 214 or permission of instructor. Three hours. Staff.
CSCI 315 - Operating Systems And Networking - This course gives an in-depth treatment of the major concepts, algorithms, and implementation principles of computer operating systems. Topics include scheduling; resource and storage management; the problems of resolving deadlock, exclusion and synchronization; memory allocation, and secondary storage implementation. Both theoretical and practical aspects are considered. Students undertake substantial projects that develop their understanding of the topics. Networking concepts and lab activities vary from offering to offering. Prerequisites: CSCI 211 and MATH 220 or permission of the instructor. Four hours. Staff.
CSCI 332 - Computer Graphics - Students will learn to use a standard graphics API and apply this knowledge to develop graphics applications for several areas. Topics will include a study of basic graphics algorithms, hardware components, output primitives and their attributes, 2D/3D transformations, clipping, interactive input, viewing pipeline, hidden surface removal, shading models, and curve and surface design. Prerequisite: CSCI 112 and CSCI 214, or permission of the instructor. Offered alternate years. Three hours. Staff.
CSCI 334 - Simulation and Modeling - - The fundamentals of building a simulation model for a phenomenon that changes state at discrete points in time will be considered. Emphasis will be on learning modeling techniques through a variety of examples and implementing these techniques using a modern simulation language. Topics will include simulation languages, random number generation, selection of probability distributions, system performance measures, and confidence intervals for output data. Prerequisite: completion of CSCI 112 and a one-year sequence of mathematics. Offered alternate years. Three hours. Staff.
CSCI 340 - Parallel Computing - This course introduces the theory and practice of parallel computing. Topics include: processes sharing resources (concurrency), processors sharing resources (architecture models, performance measures, speedup for parallel models), parallelizing algorithms, implementation of algorithms in message-passing systems. Prerequisites: CSCI 214 or permission of the instructor. Three hours. Staff.
CSCI 395 - Junior Seminar - This course offers a student the opportunity to explore an area of computer science or its application in a mode that fosters learning independent of an instructor as well as possibly working on development in a team environment. For example, students might take on projects that require them to learn a new programming language and/or delve deeply into application software and/or perform complex hardware/software interfacing-projects that take them into topics and technologies not otherwise encountered in our curriculum. . This seminar introduces students to a true seminar setting as they meet regularly to hear/present summaries of project progress and topical investigation. It serves as a precursor to the Senior Project where such seminars are also incorporated. Prerequisites: CSCI 214 and junior standing. Three hours. Staff.
Senior Level Courses
CSCI 411 - Compiler Design - In this course students will learn the use of regular expressions and context-free grammars in the specification and processing of programming languages. Given such specifications for a simple programming language, they will use lex- and yacc-type tools to generate scanners and parsers sufficient to translate the language to intermediate code, and they will write an interpreter of the intermediate code. The course will also discuss aspects of code generation and optimization. Prerequisite: MATH 220 or permission of the instructor. Three hours. Staff.
CSCI 450 - Internship in Computer Science - An experience in practical education. Each student enrolled in this course will become an active participant in a company's computer science applications. Work schedules will be determined by the participating company. Students will be responsible to a supervisor or supervisors, at the discretion of the respective companies, and to a member of the college's computer science department. Actual work performed will be determined by the company supervisors and may or may not involve a special project. Some possibilities include: computerizing a small company's payroll, inventory, etc.; participating in the systems programming department of a large company; or writing programs based on specifications for a consulting firm specializing in computer applications.
Once a month during the fall or spring terms or twice during the January term, the student, his or her company supervisor, and a computer science department faculty member will meet to discuss the program. Further, each student will meet individually with his or her faculty representative bi-weekly in the fall or spring terms and weekly in the January term to discuss the student's progress. At the end of the term, before a final grade is assigned, each student must submit two copies (one for the company and one for the college's computer science department) of a formal report which summarizes the student's work activities during the term. In addition, the company supervisor may also submit a short, confidential report on the student's performance. Prerequisite: junior or senior status, an overall minimum R-MC GPA of 2.25, and departmental approval. Application required; see page 44. Offered as needed. Three hours. Staff.
CSCI 481 - Selected Topics in Computer Science - A course in seminar format intended to provide further insight into the many facets of computer science. Students may expect extensive reading assignments, the preparation of written and oral reports, and the programming and documentation of non-trivial computer projects. Prerequisite: permission of the instructor. Offered on demand. Three or four hours. Staff.
CSCI 482 - Selected Topics in Computer Science - A continuation of CSCI 481. Offered as needed. Three or four hours. Staff.
CSCI 483 - Capstone Project-Software - This course requires extensive work in some area of Computer Science that the student has studied. A formal proposal for the project must be submitted to and approved by the department during the semester prior to the semester the student is to enroll in the Senior Project. This proposal may be modified during the course of the project with the approval of the supervising faculty. In addition to a substantial working software project, students will be expected to provide written documentation in the form of a testing plan, javadoc-style class and method comments, and a user's guide. A formal oral presentation of the project is required. Prerequisite: CSCI 395 and senior standing. Three hours. Staff.
CSCI 484 - Capstone Project-Software - A continuation of CSCI 483. Offered as needed. Three hours. Staff.
CSCI 485 - Capstone Project-Research - This course requires extensive work in some area of Computer Science that the student has studied. A formal proposal for the project must be submitted to and approved by the department during the semester prior to the semester the student is to enroll in the Senior Project. This proposal may be modified during the course of the project with the approval of the supervising faculty. The results of the research must be written in the form of a journal article with appropriate citations. A formal oral presentation of the project is required. Prerequisite: CSCI 395 and senior standing. Three hours. Staff.
CSCI 486 - Capstone Project-Research - A continuation of CSCI 485. Offered as needed. Three hours. Staff.