Individual courses are the building blocks of each degree program. Course requirements are structured to ensure that student study encompasses a broad range of topics and approaches, with an appropriate balance maintained among the three curricular components that comprise a liberal arts education: General Education, The Major, and Electives. The three components are described below:
Curriculum - Bachelor of Science in Computer Science
Students pursuing a Bachelor of Science degree must complete the following 11 courses to fulfill the
General Education requirements. To see the full list of general education courses required, please visit the catalog or the General Education Requirement, course catalog.
Major Courses Required
|Course Code||Course Name||Prerequisites||Credits|
|MATH 1201 (proctored course)|
This course provides a solid grounding in algebra, trigonometry, and analytic geometry in preparation for further mathematical studies. The course includes an extensive study of linear, quadratic, and rational functions. It also contains an introduction to exponential and logarithmic functions and circles. Finally, the topic of systems of linear equations is covered.
|MATH 1280 (proctored course)|
Introduction to Statistics
This course presents students with basic concepts in statistics and probability and encourages statistical thinking. Topics covered include descriptive statistics, probability, discrete and continuous random variables, the sampling distribution and the Central Limit Theorem. The R statistical programming environment is used for computation, graphical presentation, and simulations.
This course covers the basics of computer programming and provides a foundation for further learning in this area. No previous computer programming knowledge is required to finish this course. The course uses the Python programming language which is very simple and straightforward. The course also covers abstract concepts which can be applied to almost any programming language, and students are encouraged to pay attention to these, since the way of thinking like a programmer is the most valuable lesson they will learn.
This introductory course teaches the fundamental concepts of programming languages by use of the popular Java language. The topics cover fundamental principles of programming, including data types, program control and decisions, loops, string manipulations, procedures, arrays, software testing, and debugging.
This course builds on the Introduction to Programming 1 course and teaches a more highly developed Java programming language with features beyond the basic concepts covered in the first programming course. A large part of the course will be devoted to more advanced building blocks such as recursion, linked data structures, and Java’s Collection Framework. In addition to this, students learn about designing and coding complex, robust, and efficient programs, and are introduced to a professional programming tool: the Eclipse Integrated Development Environment.
This course is an introduction to computer systems. In this course we will begin by exploring the internal design and functionality of the most basic computer components. From there, we will use an online hardware simulator to actually “build” a computer and develop an assembler from the ground using concepts we will learn in the class. In the process, we will cover the ideas and techniques used in the design of modern computer hardware and is cuss major trade – offs involved in system design as well as future trends in computer architecture and how those trends might affect tomorrow’s computers.
This course introduces the fundamental concepts necessary for designing, using and implementing database systems. We stress the fundamentals of database modeling and design, relational theory, and the Structured Query Language.
Communications and Networking
This course will introduce the basic concepts of communication networks, including the OSI model and different types of communication protocols, including the Internet Protocol TCP/IP protocol). The course will also cover the key concepts and structures of the Internet. Throughout the course, we will mainly be focusing on the two most prevalent reference models of network definition, OSI and TCP/IP.
Web Programming 1 (proctored course)
This course introduces students to fundamental concepts and issues surrounding software development for programs that operate on the web and the internet such as static and dynamic content, dynamically served content, web development processes, and security.
Operating Systems 1 (proctored course)
This course provides an applied introduction to commercial operating systems. It is intended or intermediate students who have basic programming skills. Key concepts of computer systems and operating systems are introduced, as well as the communications and linkages associated with computer systems. Operating systems that are introduced include Microsoft Windows and UNIX/Linux.
Software Engineering 1
This course focuses on the engineering process requirements, including identification of stakeholders, requirements elicitation techniques such as interviews and prototyping, analysis fundamentals, requirements specification, and validation. Course topics will include the use of models (State-oriented, Function-oriented, and Object-oriented), documentation or Software Requirements (Informal, semi-formal, and formal representations), structural, informational, and behavioral requirements; non-functional requirements, and the use of requirements repositories to manage and track requirements through the life cycle.
Data Structures (proctored course)
This course introduces the fundamental concepts of data structures and the algorithms that proceed from them. Although this course has a greater focus on theory than application, the assignments, examples, and cases introduced throughout the course help to bridge the gap between theoretical concepts and real world problem solving. We will be using a software tool that will enhance our understanding of the operation and function of the data structures and algorithms explored throughout the course by visually animating examples of data structures and algorithms so that we can understand their operation. Key topics within this course will include recursion, fundamental data structures (including stacks, queues, linked lists, hash tables, tress, and graphs), and the basics of algorithmic analysis.
Web Programming 2 (proctored course)
This course builds on the concepts and issues discussed in Web Programming 1 surrounding software development for programs that operate on the web and the Internet. Existing and emerging web development topics to be covered include web applications, web services, enterprise web development, markup languages, and server-side programming.
Databases 2 (proctored course)
This course will cover server database management, configuration and administration, security mechanisms, backup and recovery, transact SQL Programming, and an introduction to database web-application development.
Operating Systems 2 (proctored course)
This course builds on principles learned in Operating Systems 1 to approach complex computer operating system topics such as networks, parallel computing, remote procedure call, concurrency, transactions, shared memory, message passing, scale, naming, and security.
Comparative Programming Languages
This course focuses on the organization of programming languages, emphasizing language design concepts and semantics. This course will explore the study of language features and major programming paradigms, with a special emphasis on functional programming.
Data Mining and Machine Learning (proctored course)
This course presents an introduction to current concepts in machine learning, knowledge discovery, and data mining. Approaches to the analysis of learning algorithm performance will also be discussed and applied.
This course is primarily intended for students majoring in Computer Science. The emphasis will be on the development of technical discrete mathematics skills, rather than rigorous proof. Topics will include number systems, sets, logic, induction, elementary counting techniques, relations, functions, matrices, and Boolean algebra.
This course provides an interdisciplinary introduction to the core concepts of differential calculus, covering a wide range of topics. Content includes both applications and theory of differential calculus leading to an introduction of The Fundamental Theorem of Calculus. Learners will continue to refine independent study skills, problem solving, logically correct and mathematically precise writing and thinking, and their ability to use geometric, symbolic and analytic formats in presenting solutions to both abstract and real world applications.
Students pursuing a bachelor of Science degree may choose additional elective
courses beyond those specified in the General Education requirements, and/or select introductory
courses in other majors and/or take additional courses in a student’s major that may not be required
for the degree.