Course Descriptions

Introductory 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.

108 - Internet Privacy and Security – This course explores how the concepts of privacy and security have changed with the emergence of personal computers, tablets, and smart phones. Students will learn to leverage the benefits of emerging technologies and applications while understanding the impacts to their personal security and privacy. Students will also develop a working knowledge of the ethical issues related to emerging technologies and social media applications and research issues related to personal privacy, freedom of expression, and respecting and protecting intellectual property. 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.

181-182 – Special Topics in Computer Science – Three hours each.

Intermediate Level Courses

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. Prerequisite: CSCI 112. Four 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.

281-282 – Special Topics in Computer Science – Three hours each.

Upper Level Courses

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. 

335 - Web Development – In this course, students will learn to design and develop dynamic web applications with emphasis on server-side programming. Topics include an introduction to basic web technologies (HTML, CSS style sheets) for creating web pages, server-side programming using the PHP programming language, client-side programming using Javascript to create interactive web pages, common programming interfaces for accessing relational databases, and proper techniques for user authentication. Prerequisite: CSCI 212 or CSCI 213. 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.

363 – 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. Prerequisite: MATH 220. Three hours.

381-382 – Special Topics in Computer Science – Three hours each. 

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.

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.

485 – Computer Science Capstone– This course provides a culminating experience that 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 at the beginning of term. This proposal may be modified during the course of the project with the approval of the department faculty. In addition to the completion of the project, a formal oral presentation and a formal written report are also required. Prerequisites: senior standing and within the last two terms before graduation. Three hours.