CSCI 106 - Exploring Quantitative Analysis (3 Hours)
In this course, students explore introductory data collection and data analysis techniques common in the business environment. The emphasis of this course is problem-solving and interpretation of quantitative information using spreadsheet applications. Topics covered include formula development, multiple and external datasets, accounting functions, financial data analysis, linear regression, and what-if analysis. C21:NS,QS.
Curriculum: NS,QS
CSCI 111 - Introduction to Computer Science (4 Hours)
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. C21:NS,QS.
Curriculum: NS,QS
CSCI 112 - Data Structures (4 Hours)
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(s): CSCI 111
CSCI 181 - Special Topics in Computer Science (3 Hours)
CSCI 182 - Special Topics in Computer Science (3 Hours)
CSCI 210 - Introduction to Discrete Structures (3 Hours)
Provides an introduction to the theoretical foundations of computer science that combines theory with practical application to a variety of problems in the discipline. Topics include sets, functions, sequences, summations, Boolean algebra, recursive algorithms, complexity, matrices, trees, graphs, and discrete probability. Assignments in the course require a basic understanding of problem-solving and programming experience.
Prerequisite(s): CSCI 111
CSCI 211 - Computer Organization (3 Hours)
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(s): CSCI 111
CSCI 212 - Systems Programming (4 Hours)
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(s): CSCI 112
CSCI 213 - Object-Oriented Programming (4 Hours)
An introduction to problem-solving and the iterative design process using the object-oriented paradigm with an emphasis on the design, creation, and testing of large software development projects. Topics include class design and implementation in Java, principles of object-oriented design and development, unit testing, and program documentation. The laboratory sessions will exercise and enhance student understanding of the principles covered in the lectures.
Prerequisite(s): CSCI 112
CSCI 229 - Introduction to Robotics (3 Hours)
This course introduces the fundamental concepts, principles, challenges, and research in major areas of Robotics. The primary focus is on learning to design, build and program Lego MindStorm EV3 robots. Students will learn the EV3 software package used to program the robots and will build and program robots over the course of the term. Topics include: exploring the features of the EV3 robot controller, designing robotic actions to solve general problems (e.g., moving about), incorporating environmental sensors (e.g., infrared, touch, and color), and building unique robots that have different functions and behaviors based on the problem to be solved. Offered alternate years.
Prerequisite(s): CSCI 112
CSCI 236 - Database Systems (3 Hours)
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. Offered alternate years.
Prerequisite(s): CSCI 112
CSCI 281 - Special Topics in Computer Science (3 Hours)
CSCI 282 - Special Topics in Computer Science (3 Hours)
CSCI 311 - Algorithms (3 Hours)
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. C21:CC.
CSCI 330 - Network Architecture and Protocols (3 Hours)
This course introduces students to the concepts and protocols of modern computer networks with emphasis on the Internet. Topics include network architecture and layering, routing and switching, commonly used network protocols (Ethernet, IP, TCP, HTTP, SMTP, POP), and client-server network application development. This course includes a significant programming component. Offered alternate years.
Prerequisite(s): CSCI 212
CSCI 332 - Computer Graphics (3 Hours)
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. Offered alternate years.
Prerequisite(s): CSCI 212
CSCI 333 - Programming Languages (3 Hours)
A comparative study of the organization and implementation of a variety of programming languages, and language features. Topics will include 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 discussed. Languages representing the different programming paradigms will be studied. These languages will be compared and evaluated.
CSCI 335 - Web Development (3 Hours)
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. This course includes a significant programming component. Offered alternate years.
CSCI 339 - Artificial Intelligence (3 Hours)
This course provides an introduction to the concepts, principles, challenges, and research in Artificial Intelligence with a primary focus on defining an intelligent agent. Topics include defining Artificial Intelligence and Intelligent Agents; problem solving techniques; knowledge, reasoning and planning; and working with uncertain knowledge and reasoning.
CSCI 340 - Parallel Computing (3 Hours)
This course 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. Offered alternate years.
Prerequisite(s): CSCI 212
CSCI 343 - Introduction to Simulation (3 Hours)
This course provides an introduction to simulation, with an emphasis on discrete-event simulation and Monte Carlo simulation. Topics include model development, random number generation, elementary statistics, discrete and continuous random variables, estimation, and input modeling.
Prerequisite(s): CSCI 213
CSCI 350 - Operating Systems (3 Hours)
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. Offered alternate years.
CSCI 363 - Theory of Computation (3 Hours)
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.
CSCI 380 - Special Topics in Computer Science (3 Hours)
CSCI 381 - Special Topics in Computer Science (3 Hours)
CSCI 382 - Special Topics in Computer Science (3 Hours)
CSCI 383 - Special Topics in Computer Science (3 Hours)
Offered as needed.
CSCI 391 - Independent Study (3 Hours)
An independent study under the guidance of a member of the department. At least a 3.25 cumulative GPA and approval by the curriculum committee are required.
CSCI 401 - Capstone Experience (1 Hour)
A culminating experience in which a computer science or cybersecurity major will draw upon the knowledge and skills acquired in previous courses to examine relevant literature to a specific problem within an area of their major program. The problem selected by the student in consultation with their capstone advisor must be approved by the departmental capstone committee through a written proposal. A formal oral presentation along with a written report are required to complete the capstone experience. CSCI 401 will be evaluated by the departmental capstone committee members and will be based on the student's individual work with their capstone advisor, the capstone project, and the final presentation and written report. C21:CS.
Prerequisite(s): Senior status and departmental approval
Curriculum: CS
CSCI 403 - Capstone Project (3 Hours)
A culminating research project in which a computer science or cybersecurity major will integrate, extend, and apply knowledge and skills accumulated through the pursuit of their major programs. The project selected by the student in consultation with the instructor must be approved by the departmental capstone committee through a written proposal. The student is required to spend at least three hours per week in the laboratory. The project will culminate in a formal written report and oral presentation. Performance in CSCI403 will be evaluated by the departmental capstone committee members and will be based on the students' individual work with the instructor, the capstone project, and the final presentation and written report. C21:CS,EL.
Prerequisite(s): Senior status and departmental approval
Curriculum: CS,EL
CSCI 450 - Internship in Computer Science (3 Hours)
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 that 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. Application required; see Internship Program. Offered as needed. C21:EL. A special fee ($200) is charged for this course.
Prerequisite(s): junior or senior status, an overall minimum Randolph-Macon College GPA of 2.25, and departmental approval
Curriculum: EL
CSCI 455 - Field Study (3 Hours)
A Field Study is an experiential learning course combining elements of workplace experience, observation, and research. Students are expected to work closely with a faculty field study supervisor to develop learning objectives and a plan of study appropriate to the discipline. Assignments may include a reflective journal, activity reports, and one or more directed research papers appropriate to the discipline. Workplace experience requirements should be similar to those of internships. Students should not receive compensation from workplace experience if they are receiving three-hour course credit.
CSCI 457 - Internship in Comp Science (Paid) (3 Hours)
With prior approval students may earn Experiential Cross Area Requirement (CAR) credit and transcript notation for three credit hours for a paid internship. To qualify for experiential credit a student must have completed 48 semester hours of work prior to the beginning of the internship and be in good academic standing (not on academic probation) at the time of application and at the start of the internship. Registration and application procedures are similar to those for academic internship courses. Satisfactory completion of a paid internship requires at a minimum 130 hours (160 recommended) working at the host site, a reflective daily journal, final written report, and satisfactory evaluation from the site supervisor. C21:EL
Curriculum: EL
CSCI 481 - Special Topics in Computer Science (3 Hours)
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. Offered as needed.
Prerequisite(s): permission of the instructor
CSCI 482 - Special Topics in Computer Science (3 Hours)
A continuation of CSCI 481. Offered as needed.
CSCI 485 - Computer Science Research (3 Hours)
This course provides qualified students the opportunity to explore and conduct extensive research in an area of computer science or cybersecurity that goes beyond the work completed in pursuit of their majors. Considerable self-discipline, diligence, and ingenuity on the part of the student are necessary. The research project selected by the student in consultation with a faculty supervisor, must be approved by the departmental faculty through a written proposal. The project will culminate in a formal written report and oral presentation. When used to satisfy the capstone experience, the performance in CSCI 485 will be evaluated by the departmental capstone committee members and will be based on the student's individual work with their capstone advisor, the capstone project, and the final presentation and written report. C21:CS,EL.
Prerequisite(s): Senior status and departmental approval
Curriculum: CS,EL
CSCI 486 - Computer Science Research (3 Hours)
A continuation of CSCI 485. Offered as needed.