Course Descriptions

Freshman Level Courses

106 – Computer Applications in Business – In this course, students develop problem solving skills using computer applications found in the business environment. The emphasis in this course is on spreadsheet applications. The course will also include either an introduction to PowerPoint and its effective use or an introduction to relational databases and Microsoft Access. Other topics that may be included are an introduction to basic computer organization and social issues surrounding the use of computers. Three hours.

107 – Introductory Web Design and Programming – This course provides a disciplined introduction to client-side web programming and design. The course emphasizes: a clear division between page contents, page appearance, and page behavior; adherence to W3C web standards (to ensure pages work on all browsers and devices); and techniques for design, debugging, and solving common errors. Three hours.

111 – Introduction to Computer Science – This course provides an introduction to the basic ideas of algorithmic problem solving and an introduction to computer programming. Topics discussed include concepts in software engineering, problem solving, programming control structures, class definition and instantiation fundamentals, file input/output, and elementary data processing. A weekly three-hour laboratory will exercise and enhance student understanding of the principles covered in the lectures. Four hours.

112 – Data Structures – A continuation of CSCI 111 in which problem solving and software development skills are improved and refined. This course places emphasis on the use of abstraction and common data structures for solving more complex problems. Topics covered include: data abstraction, implementation and use of data structures (lists, maps, stacks, queues, hash tables, binary trees), algorithmic efficiency (an introduction to big-Oh notation), algorithmic techniques (recursion and backtracking) 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.

Sophomore Level Courses

207 – Web Programming II – This course covers the techniques used in programming web pages for interactive content. In particular, students learn how to de- sign and implement databases that reside on the server and dynamically interact with them with Ajax and SQL. The course begins with a review of basic web technologies (HTML, CSS style sheets) for creating web pages and exploring the use of event-driven programming in JavaScript to add interactive elements such as buttons and text fields to web pages. Next, students use AJAX tools to build web pages that connect to servers like Google to dynamically access data (maps, search results, videos, images, etc.). Finally, the students learn how to write their own server side code to provide access to a custom database. Prerequisite: CSCI 107 or 111 or permission of instructor. Three hours.

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. Prerequisite: CSCI 111 or permission of the instructor. Three hours. 

212 – Systems Programming – This course involves students significantly with the structure of a UNIX based operating system and the C/C++ programming languages. Through the investigation of UNIX, students will learn first principles of system programs and structures. Programming projects will focus on system features and the application programming interface with the system. Topics will include the UNIX shell, system structures, system calls, program development, signals, process management, interprocess communication and concurrency. Prerequisite: CSCI 112. Four hours.

213 – Software Development – An introduction to software development in the object-oriented paradigm with an emphasis on the role of the individual programmer in large software development projects. Topics include object-oriented class design and implementation, debugging techniques, unit testing, design patterns, the use of development and analysis tools, and program documentation. The laboratory sessions will exercise and enhance student understanding of the principles and skills required in software development. Four hours. Prerequisite: CSCI 112. Three hours.

236 – Database Systems – This course provides an introduction to the principles and methodologies of database design and database application development. Topics include data modeling, database design theory, data definition and manipulation languages, relational databases, relational algebra, SQL, query design, and database programming interfaces. Prerequisite: CSCI 112. Offered alternate years. Three hours.

Junior Level Courses

310 – Theory of Computation – A study of some of the theoretical foundations of three central areas of the computer science curriculum: algorithms, programming languages, and computer architecture. Topics may include finite automata, formal languages, Turing machines, computability, and computational complexity. Students entering this course will be expected to understand techniques of mathematical proof. Prerequisites: CSCI 311 and MATH 220. Three hours.

311 – Algorithms – This course builds on the content of CSCI 112 to provide a more advanced introduction to algorithms and algorithmic efficiency. 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 techniques (divide-and-conquer, dynamic programming, branch and bound, backtracking, and greediness), and algorithm analysis techniques for examining the space and time complexity of algorithms. Co-requisite: MATH 220. Prerequisite: CSCI 112 with a grade of at least C- or permission of the instructor. Three hours. 

330 – Computer Networks – This course introduces students to the fundamentals of modern computer networks. The course examines how modern computer networks developed, details how they are used and implemented, and provides a foundational basis for further study of the topic. Prerequisite: CSCI 212 or permission of the instructor. Offered alternate years. Three hours.

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. Prerequisites: CSCI 212, or permission of the instructor. Offered alternate years. Three hours. 

340 – Parallel Computing – This course is introduces the theory and practice of parallel computing. Through discussions of principles and implementation of these principles, students will gain experience and knowledge of some of the central issues of parallel computing. Topics include: processes sharing resources (architecture models, performance measures, speedup and laws for parallel models), and designing and implementing parallel algorithms in message-passing systems. Prerequisite: CSCI 212 or permission of the instructor. Offered alternate years. Three hours.

350 – Operating Systems – This course examines concepts and algorithms of modern operating systems. Topics include processes, threads, CPU scheduling, process synchronization, deadlocks and memory management. Programming assignments will complement these topics. Prerequisites: CSCI 211 and CSCI 212 or permission of the instructor. Offered alternate years. Three hours.

381 – Selected Topics in Computer Science – A course 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 hours. 

382 – Selected Topics in Computer Science – A continuation of CSCI 381. Offered as needed. Three hours. 

395 – Seminar – This course, given in a topical-seminar format, is intended to help students strengthen their skills in reading, understanding, exploring, and presenting computer-science concepts. Led by the course instructor and centered on a single topic or thread of topics, students participate in the delivery of the instruction for the course. As appropriate to the content, students may be required to complete projects that enhance the opportunity to develop a deep understanding of the course content. Three hours.

Senior Level Courses

401 – Capstone Experience – A culminating experience in which a computer science major is required to integrate, extend, and apply knowledge and skills accumulated through the pursuit of the major program to a software project. The project selected by the student in consultation with a member of the department faculty must be approved by the department. A formal oral presentation along with a written report of the project work are required to complete the capstone experience. Prerequisites: senior standing and within the last two terms before graduation. One hour.

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.

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. The student, his or her company supervisor, and a computer science department faculty member will meet to discuss the program. At the end of the term, before a final grade is assigned, each student must submit a formal report which summarizes the student’s work activities during the term. In addition, the company super- visor may also submit a short, confidential report on the student’s performance. Prerequisites: junior or senior status, an overall minimum Randolph-Macon College GPA of 2.25, and departmental approval. Application required; see Internship Program. Offered as needed. Three hours.

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 Capstone 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. Prerequisites: CSCI 395, senior standing, and permission of the department. Three hours.

484 – Capstone Project – Software – A continuation of CSCI 483. Offered as needed. Three hours.

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 Capstone 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. Prerequisites: CSCI 395, senior standing, and permission of the department. Three hours.

486 – Capstone Project – Research – A continuation of CSCI 485. Offered as needed. Three hours.

487-488 – Departmental Honors I and II – Offered as needed. Three hours each.