Wake Forest University SearchDirectoriesHelpSite MapHome
         
 

Undergraduate Program

[ Getting Started ] [ Requirements for the Major ] [ Course Descriptions ]

I. What is Computer Science?  

Of the scientific disciplines taught at today's universities, computer science is the youngest. Unlike the natural sciences, which explore and analyze the natural world around us, computer science is a unique combination of abstraction and invention. On the one hand, computers are fashioned in their essence from abstract logic, emerging from efforts to understand, formalize, and simulate human thought. On the other hand, computers are ingeniously engineered machines originally invented to solve very real problems—to do tedious, error-prone mathematical calculations; to process volumes of census data; to compute complex ballistic tables for missile trajectories; or to crack enemy codes during World War II. Now, less than 60 years after the invention of ENIAC, EDSAC, and UNIVAC, computers have changed the way we communicate, learn, solve problems, do business, and make war. 

So what does the study of computer science entail? A common misconception of students is that they will learn to be master web page builders, or that they will learn how to use their computers for Word processing, spreadsheets, web browsing, photo processing, or drawing and mastering CAD programs. But computer science goes far beyond computer use, and in fact people who are adept computer users do not necessarily make the best computer scientists. Computer science in its essence is a study of the possibilities and limits of machine computation for problem-solving. The practical side of computer science entails an understanding of basic physics and electronics, computer hardware, and networking, as well as the ability to write computer programs. A computer scientist can find a niche in one of many areas of specialization including databases, operating systems, programming languages, computer architecture, digital media, and artificial intelligence. Whatever the area of specialization, computer science first and foremost requires logical thinking, mathematical ability, problem-solving skills, and analytical thought. For the student prepared for the challenges, it is an exciting and dynamic discipline that can lead to excellent job opportunities and a lifetime of intellectual stimulation. 

Students at Wake Forest are exposed to a broad base of courses within the computer science major. Beginning with an introduction to computer programming, formal logic, and algorithmic problem-solving, they progress to specialized courses in data structures, computer architecture, software organization, theory of algorithms, operating systems, networks, digital media, and database management systems. Complete course descriptions are available from the Course Descriptions page at the department's web site (http://www.cs.wfu.edu).

 

II. Getting Started in Computer Science

We offer the sample schedules below as a guide for students considering a major in computer science at Wake Forest. We recommend that you take CSC 111 Introduction to Computer Science in your freshman year to get a clearer picture of the nature of computer science as a field of study and to measure your interest and ability. We also recommend that you take MTH 117 Discrete Mathematics in your freshman or sophomore year. MTH 117 gives you a good taste of the kind of logical problem solving that forms the basis of computer science. You should also note that MTH 117 is a prerequisite for all the upper level computer science courses, so it is important to take it in the freshman or sophomore year in order to stay on schedule.

Your study of calculus, which is required for the computer science major, should begin at a level appropriate for your background. Most students should begin with MTH 111. Please contact the Department of Mathematics if you have questions about the calculus course that is right for you.

CSC 111 Introduction to Computer Science emphasizes principles of computer programming, including algorithm design and logical problem solving. CSC 111 may be omitted by students with Advanced Placement Computer Science or by students who, in the judgment of the CSC 112 instructor, have already had a solid introduction to computers and computer programming. Most students are advised to take CSC 111 since CSC 112 assumes that students have some knowledge of programming and are able to progress at a fast pace. A prerequisite diagram for all the courses in the computer science major can be found on page four.

You may notice in the university bulletin that there is another introductory computer science course - CSC 101 Overview of Computer Science. CSC 101 differs from CSC 111 in that it does not cover programming in the same depth as CSC 111, and it does not count toward the computer science major. Instead, CSC 101 gives an overview of computers and their use. Although the course does not count toward the major, many students find it to be a good place to begin their study of computers; thus, we include it in Scheduling Option III below.

Here are three sample schedules for the first two years of college that will put a student on track for the computer science major:

 

Scheduling Option I: Assuming first Mathematics course is MTH 111 (Calculus I)

Freshman Year

Sophomore Year

Fall Semester

Spring Semester

Fall Semester

Spring Semester

CSC 111
MTH 111

CSC 112
MTH 112

MTH 117

CSC 221
MTH 121 or MTH 302

Scheduling Option II :  Assuming first Mathematics course is MTH 112 (Calculus II)

Freshman Year

Sophomore Year

Fall Semester

Spring Semester

Fall Semester

Spring Semester

CSC 111
MTH 112

CSC 112
MTH 117

CSC 211 or
CSC 221

CSC 241 or CSC 222
MTH 121 or MTH 302

 

Scheduling Option III :  Assuming first Mathematics course is MTH 106

Freshman Year

Sophomore Year

Fall Semester

Spring Semester

Fall Semester

Spring Semester

CSC 101
MTH 106

CSC 111
MTH 111

CSC 112
MTH 112

MTH 117

 

III. Requirements for the Computer Science Major

A bachelor of science in computer science requires a minimum of thirty-eight hours in computer science and three courses in mathematics. The courses in computer science must include 111, 112, 211, 221, 222, 231, and 241. The required courses in mathematics are 112, 117, and 121 or 205. Either MTH 256 or 357 is also recommended for students considering graduate work in computer science.


A bachelor of arts in computer science requires a minimum of twenty-seven hours in computer science and three courses in mathematics or statistics. The courses in computer science must include 111, 112, 221, and 241. An additional twelve hours in computer science are required, including three hours at the 191 level or higher, three hours at the 200 level or higher, and six hours at the 300 level or higher. The required courses in mathematics and statistics are MTH 117; either MTH 121 or MTH 205; and one course selected from MTH 109, MTH 256, or any statistics course approved by the computer science department.

A minor in computer science requires CSC 111, 112, and 221; at least three additional hours in computer science at the 191 level or higher; and MTH 117.

Students considering a major in computer science are encouraged to take CSC 111 and the appropriate mathematics courses, including MTH 117, during their first year of college. Students with sufficient programming experience may substitute a higher-level course for CSC 111.

A minimum grade point average of 2.0 in courses that comprise a major or minor in the department is required for graduation.

Students with a special interest in multidisciplinary work may wish to consider a program of study that combines computer science with another discipline such as art, business, or biology. For example, the computer science and art departments offer a combined program of study with emphasis in digital media. Advisers in either the computer science or the art department can provide further information on coordinating a computer science major with an art minor, or vice versa.

Honors. Highly qualified majors are invited by the department to apply for admission to the honors program. To be graduated with the designation “Honors in Computer Science,” students must satisfactorily complete a senior research paper and have a minimum grade point average of 3.5 in the major and 3.0 in all college course work. For additional information, members of the departmental faculty should be consulted.

Students who are enrolled at Wake Forest University may not take courses in computer science at other institutions to satisfy divisional requirements.

IV. Course Descriptions

FYS 100. Freshman Seminar. (Syllabus for Burg, Wong.)

101. Overview of Computer Science. (4h) Lecture and laboratory. An introduction to the organization and use of computers. Topics include computer architecture, systems, theory, logic, programming, the Internet, multimedia, and ethical, legal, and social issues. Does not count towards the computer science major or minor. Lab - two hours. (D) (Syllabus for Kell; Lab Syllabus for Kell, Thomas, Wong.)

108. Introduction to Computer Programming. (4h) Lecture and laboratory. An introduction to the basic concepts of computer programming and problem solving for students with varied backgrounds and no prior programming experience. The programming language used and the focus vary by instructor. Topics may include multimedia programming, game programming, graphic animation, and scientific computing. Does not count toward the computer science major or minor. Lab – two hours. (D) (Syllabus for Wong.)

111. Introduction to Computer Science. (4h) Lecture and laboratory. Rigorous introduction to the process of algorithmic problem solving and programming in a modern programming language. Recommended as the first course for students considering a major or minor in computer science. Lab – two hours. P – Non-declared majors/minors only, or POI. (D) (Syllabus for Fulp, John, Pauca, Turkett.)

112. Fundamentals of Computer Science. (4h) Lecture and laboratory. Problem solving and program construction using top-down design, data abstraction, and object-oriented programming. Linear data structures, recursion, and software development tools are introduced. Lab - two hours. P - CSC 111 or POI. (D) (Syllabus for Burg, Fulp, Pauca.)

165. Problem Solving Seminar. (1h) Weekly seminar designed for students to develop their problem solving skills designing and implementing software. Does not count towards the computer science major or minor. May be taken twice. Pass/Fail. P - CSC112.

191. Special Topics. (1-3h) Topics in computer science that are not covered in regular courses or that give special practice in skills used in other courses. Not to be counted toward the bachelor of science in computer science. May be taken more than once if the topic changes. (Syllabus for Burg, Canas, Thomas.)

193. Independent Study. (1-3h) Independent study directed by a faculty adviser, not to be counted toward the bachelor of science in computer science. By prearrangement.

211. Computer Organization. (4h) Lecture and laboratory. Computer organization from the perspective of instructions, including the central processor, busses, input and output units, and memory units. Weekly two-hour laboratory covers combinational logic, loaders and linkers, assembly language, address computation, and other architecture-related functions. Lab - two hours. P - CSC112 and MTH 117. (D) (Syllabus for Canas.)

221. Data Structures and Algorithms I. (3h) Study, analysis, and implementation of abstract data structures such as stacks, queues, trees, and graphs. Complexity analysis of algorithms that operate upon these data structures. P-CSC 112 and P or C-MTH 117. (D) (Syllabus for Burg,Turkett.)

222. Data Structures and Algorithms II. (3h) A continuation of the study, analysis, and implementation of abstract data structures. The complexity of algorithms is studied more rigorously than in CSC 221 and complexity classes are introduced. P - CSC 221 and MTH 111. (QR) (Syllabus for Pauca,Torgersen, Turkett.)

231. Programming Languages. (4h) Lecture and laboratory. Comparative study of programming language paradigms, including imperative languages, functional programming, logic programming, and object-oriented programming. Syntax, semantics, parsing, grammars, and issues in language design are covered. Lab - two hours. P - CSC 112 and MTH 117. (Syllabus for Turkett.)

241. Computer Systems. (3h) Lecture and laboratory. Introduction to concepts of operating systems and networks including processor and memory management, concurrency, and protocol-independent data communications. Lab--two hours. P - CSC 112 and MTH 117. (Syllabus for Canas.)

311. Computer Architecture. (3h) In-depth study of computer system and architecture design. Topics include processor design, memory hierarchy, external storage devices, interface design, and parallel architectures. P -CSC 211. (Syllabus for Canas.)

321. Database Management Systems. (3h) Introduction to large-scale database management systems. Topics include data independence, database models, query languages, security, integrity, and concurrency. P - CSC 221. (Syllabus for Thomas.)

331. Object-Oriented Software Engineering. (3h) Study of software design and implementation from an object-oriented perspective, covering abstraction, encapsulation, data protection, inheritance, composition, polymorphism, and dynamic vs. static binding. Students practice software engineering principles through team projects. P - CSC 221 and 231. (Syllabus for Allen, Pauca.)

333. Principles of Compiler Design. (3h) Study of techniques for compiling computer languages including scanning, parsing, translating, and generating and optimizing code. P - CSC 211 and 221. (Syllabus for Torgersen.)

341. Operating Systems. (3h) Study of the different modules that compose a modern operating system. In-depth study of concurrency, processor management, memory management, file management and security. P - CSC 241. (Syllabus for Canas.)

343. Internet Protocols. (3h) Study of wide area connectivity through interconnection networks. Emphasis is on Internet architecture and protocols. Topics include addressing, routing, multicasting, quality of service, and network security. P – CSC 241. (Syllabus for Fulp. )

346. Parallel Computation. (3h) Study of hardware and software issues in parallel computing. Topics include a comparison of parallel architectures and network topologies, and an introduction to parallel algorithms, languages, programming, and applications. P – CSC 222 and 241; or POI.

352. Numerical Linear Algebra. (3h) Numerical methods for solving matrix and related problems in science and engineering. Topics include systems of linear equations, least squares methods, and eigenvalue computations. Beginning knowledge of a high-level programming language required. Credit is not allowed for both CSC 352 and MTH 326. P – MTH 112, and MTH 121 or 205. (Syllabus for Plemmons.)

355. Introduction to Numerical Methods. (3h) Numerical computations on modern computer architectures; floating-point arithmetic and round-off error. Programming in a scientific/engineering language such as MATLAB, C, or FORTRAN. Algorithms and computer techniques for the solution of problems such as roots of functions, approximation, integration, systems of linear equations, and least squares methods. Credit not allowed for both CSC 355 and MTH 355 . P - MTH 112, MTH 121 or 205. (Syllabus for Plemmons.)

361. Digital Media. (3h) Introduction to digital media covering sampling and quantization, resolution, color representation, multimedia file formats, data encoding and compression, multimedia network issues, streaming data, and multimedia programming. P – CSC 221 and MTH 111. (Syllabus for Burg, Wong.)

363. Computer Graphics. (3h) Study of software and hardware techniques in computer graphics. Topics include line and polygon drawing, hidden line and surface techniques, transformations, and ray tracing. P - CSC 221 and MTH 121 or 205. (Syllabus for John.)

365. Image Processing Fundamentals. (3h) Study of the basic theory and algorithms for image enhancement, restoration, segmentation, and analysis. P - CSC 221 and MTH 121 or 205. (Syllabus for Pauca, Torgersen.)

371. Artificial Intelligence. (3h). Introduction to problems in artificial intelligence. Knowledge representation and heuristic search in areas such as planning, machine learning, pattern recognition, and theorem proving. P - CSC 222 or POI. (Syllabus for John, Thomas.)

385. Bioinformatics. (3h) Introduction to bioinformatics and computing techniques essential to current biomedical research. Topics include genome and protein sequence and protein structure databases, algorithms for sequence and structure analysis, and computer architecture and environment considerations. Emphasizes interdisciplinary interaction and communication and includes a project that may use software engineering and project management protocols and requires working a part of an interdisciplinary team. Also listed as PHY 385. P—CSC 121 or POI. (Syllabus for Fetrow, John.)

387. Computational Systems Biology. (3h) Introduction of concepts and development of skills necessary for comprehension of modern systems biology research problems, including both biological and computational aspects. Topics may include microarrays, protein interaction networks, large-scale proteomics experiments, and algorithms and computational approaches for modeling, storing, and analyzing the resulting data sets. Emphasizes interdisciplinary interaction and communication, includes a project that may use software engineering and project management protocols, and requires working as part of an interdisciplinary team. P—CSC 221 or POI.

391. Selected Topics. (1-3h). Topics in computer science that are not studied in regular courses or which further examine topics covered in regular courses. P - POI. (Syllabus for Berry, Burg, Fetrow, Fulp, Torgersen, Turkett, Wong.)

393. Individual Study. (1-3h) Independent study directed by a faculty adviser. By prearrangement. No more than three hours may be counted towards the computer science major or minor.


Return to HomepageReturn to Homepage

-
Wake Forest
Department of Computer Science
Wake Forest University • Box 7311 Winston-Salem, North Carolina 27109
Phone: 336.758.4982 Fax: 336.758.4106
CS Department Site Map