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 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.
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 - Introduction to Computer Science III: Algorithms, Data Structures and Analysis - This course melds together a discussion of algorithms and analysis of algorithms. It examines algorithms (from areas such as graph theory, game theory, search trees, and matrix applications), the data structures useful in implementing these algorithms, algorithm development approaches (such as divide-and-conquer, dynamic programming, branch and bound, backtracking, and greediness), and algorithm analysis techniques for examining the space and time complexity of these algorithms. Prerequisite: CSCI 112 with a grade of at least C- or permission of the instructor. Recommended: MATH 220. Four hours. Staff.
CSCI 315 - Operating Systems Concepts - This course examines concepts and algorithms concerning processes, threads, CPU scheduling, process synchronization, deadlocks, and memory management. Java programming with threads and an introduction to Java network programming will complement these topics. Prerequisites: CSCI 211 or permission of the instructor. Recommended: MATH 220. Three hours. Staff.
CSCI 330 - Introduction to Computer Networking - This course introduces students to the fundamentals of modern computer networking. The course examines how modern computer networks developed, details how they are used & implemented, and provides a foundational basis for further study of the topic. Prerequisite: CSCI 211 or permission of the instructor. Offered alternate years. Three 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 336 - Programming in the .NET Framework - This course is a practical introduction to programming and using services provided by .NET. The .NET framework and the classes it provides will be covered using the C# language to program console, windows forms, data base and web service .NET applications. Prerequisites: CSCI 214 or a good understanding of object-oriented programming and instructor permission. 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.
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.
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 is 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, senior standing, and permission of the department. 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, senior standing, and permission of the department. Three hours. Staff.
CSCI 486 - Capstone Project-Research - A continuation of CSCI 485. Offered as needed. Three hours. Staff.