COMPUTER SCIENCE

Professors Bloss, Shende (Coordinator); Assistant Professor Bouchard; Visiting Instructor R.Smith

Our modern world relies on computers for everything from electronic commerce to medicine, from online entertainment to online searching for information, from social networking to robotics, from controlling power plants to flying airplanes.  Computer scientists are needed more than ever to design and build the computational systems that society depends on now and will need to solve future problems.  The computer science program at Roanoke College prepares students to play a part in meeting these computational needs and challenges and to be lifelong learners capable to adapting to the changing landscapes of technology.  It provides students with a balanced breadth and depth of knowledge in computer science that allows them the choice between continuing their education in graduate school or beginning their professional career.  Two major programs are offered:  the B.S. in Computer Science and the B.S. in Applied Computer Science.  Both programs give students a solid foundation in computer science while developing the skills necessary to apply their knowledge in the modern computing environment.  The Computer Science program gives students a deeper understanding of the theoretical foundation of computer science while the applied computer science program focuses more on applications.  A student interested in attending graduate school should choose the computer science major rather than the Applied Computer Science major. 

A Bachelor of Science degree with a major in computer science requires the satisfactory completion of 12 units in the areas of computer science, mathematics, and statistics to include Computer Science 170, 250, 290, 390, 395, 425; Mathematics 131, 201; Statistics 202; one unit of Senior Research (436 or 435/437) and  two additional units from computer science courses at or above the 300 level (one of these units may be Math 306 or Math 361). Computer Science 120 is a prerequisite for the computer science courses, Mathematics 121 is a prerequisite for Mathematics 131, and Mathematics 121 and 122 are prerequisites for Statistics 202 and Mathematics 201.

A Bachelor of Science degree with a major in applied computer science requires the satisfactory completion of 12 units in the areas of computer science, mathematics, and statistics to include Computer Science 170, 250, 290, 340, 365, 415, Mathematics 131; Statistics 202; one unit of Senior Project (446 or 445/447) and three additional units from computer science courses at or above the 300 level. Computer Science 120 is a prerequisite for the computer science courses, Mathematics 121 is a prerequisite for Mathematics 131, and Mathematics 121 and 122 are prerequisites for Statistics 202.

Minor in Computer Science
A minor in Computer Science requires six units: Computer Science 120, 170, 250, Mathematics 131, and two additional units of computer science at or above the 300 level.

101 Introduction to Computers
Please see description under INQ 241.  The Intellectual Inquiry Curriculum was implemented beginning fall term, 2009.  Students who completed this course in an earlier term should refer to the 2007-2009 academic catalog for the course description.

120 Fundamentals of Computer Science I
Problem solving and algorithm design; basic programming concepts including subprograms and objects. Programming in a modern object-oriented language and an introduction to the UNIX operating system are an integral part of the course. (1)
Lecture: 3 hrs/wk.; Laboratory: 3 hrs/wk.
Prerequisites: No formal prerequisite; however, a strong aptitude for math usually predicts success in the course.

170 Fundamentals of Computer Science II
Program design and implementation including inheritance, polymorphism, abstraction, recursion, searching, and sorting. (1)
Lecture: 3 hrs/wk.; Laboratory: 3 hrs/wk.
Prerequisite: CPSC 120.

250 Data Structures and Algorithms.
The design, implementation, and analysis of data structures and the algorithms associated with them. (1)
Lecture: 3 hrs/wk.
Prerequisite: CPSC 170.

290 Computer Architecture and Operating Systems
Machine language and assembly language concepts, data paths, parallel system architecture; system calls, process synchronization and scheduling, input and output subsystems, memory management, file systems. (1)
Lecture: 3 hrs/wk.
Prerequisite: CPSC 250.

310 Topics in Applied Computing
A course offered in various formats, designed to give students instruction and hands-on experience in an area of applied computing. (1)
Lecture: 3 hrs/wk.
Prerequisite: CPSC 170.

340 Database Systems
Database organization and management; hierarchical, network, and relational models of data and some corresponding systems. (Offered in alternate years.) (1)
Lecture: 3 hrs/wk.
Prerequisite: CPSC 170 and MATH 131.

350 Human Computer Interaction  
Analysis of human cognition and ergonomics applied to the design of usable, effective and enjoyable computer systems.  (1)
Lecture:  3hrs/wk.
Prerequisite: CPSC 170.

360 Networks
An experiential study of the fundamentals of networking, networked applications, network security, and the use of software tools in troubleshooting networks. (Offered on a rotating basis, not every year.) (1)
Lectures: 3 hrs/wk; Laboratory: 3 hrs/wk.
Prerequisite: CPSC 250.

365 Software Engineering and Project Design
Introduction to the principles of software engineering, software process models, requirements engineering, designing methodology and metrics, and testing and quality assurance. Students will apply these principles to the design and implementation of a large software project. (1)
Lecture: 3 hrs/wk.
Prerequisite: CPSC 250.

390 Theory of Computation
Study of formal models of computation. Topics include regular, context-free, context-sensitive, and unrestricted grammars; Church’s thesis; computability; and undecidability. (Offered in 2011-2012 and alternate years.) (1)
Lecture: 3 hrs/wk.
Prerequisite: CPSC 170 and MATH 131.

395 Analysis of Algorithms
Introduction to the analysis of algorithms. Students will revisit various algorithm design techniques, learn methods to analyze the computational complexity of the resulting algorithms, and study complexity classes to differentiate between tractable and intractable problems. (1)
Lecture: 3 hrs/wk.
Prerequisite: CPSC 250 and MATH 131.

402 Numerical Analysis
Numerical integration and differentiation, numerical methods in linear algebra, interpolation; error analysis, stability, and conditioning. (Offered on a rotating basis, not every year.)(Cross-listed as Mathematics 402.) (1)
Lecture: 3 hrs/wk.
Prerequisites: MATH 201, MATH 122 and CPSC 120.

405, 406, 407 Independent Study and Research
Selected topics in computer science carried out under the direction of a member of the computer science staff. (Enrollment with the approval of the Chair of the department.) (1/2, 1, 1/2)

415 Web Programming
Technologies for developing dynamic web sites with emphasis on server-side programming. (1)
Lecture: 3 hrs/wk.
Prerequisite: CPSC 250.

416 Internship
Field placement providing practical experience and training in areas in which computer science is applied. These areas may include industry, government agencies, educational institutions, insurance companies, and a variety of private enterprises. (1)
Prerequisite: Permission of the Department.

425 Principles of Programming Languages
Fundamentals in the design and implementation of programming languages. Topics include BNF, compilation and interpretation, data types, control structures, runtime systems, data abstraction, exception handling and concurrency. Language paradigms include functional, logic, and object oriented approaches. (1)
Lecture: 3 hrs/wk.
Prerequisite: CPSC 250.

435, 436, 437 Senior Research
An independent research project, under the direction of a computer science faculty member, that results in a scholarly paper and oral presentation. (1/2, 1, 1/2)
Prerequisite: Permission of the department.

445, 446, 447 Senior Project
An independent software development project, under the direction of a computer science faculty member, that results in a deliverable product and oral presentation. (1/2, 1, 1/2)
Prerequisite: CPSC 365 and permission of the department.

495, 496, 497 Honors Project
A program of independent study culminating in a paper, artistic creation, or performance.
Prerequisites: To qualify for consideration to receive honors in the major, a student, in his/her senior year or in the Summer prior to the senior year, must work under the guidance of his/her committee. A written proposal and application must be approved by the committee and department. A minimum GPA of 3.4 in the major is required. 495 Honors Project is prerequisite for 497 Honors Project. (1/2, 1, 1/2)