Computer Science (CS)
CS 1000 - Introduction to Computer Science - 3 credits
Fall Semester
This is the first of a four-course programming sequence. This course introduces computer science and computer programming concepts in a programming language agnostic environment. It includes the three basic programming structures: sequence, decision, and repetition as well as the proper use of encapsulation in programming. It also introduces the concept of Clean Code. In addition, it includes basic algorithm design and development using problem analysis skills that aid the student when developing algorithms. This course also introduces students to computer science jargon. By the end of this course students will know how to create and maintain an online program repository.
Upon entering this course, it is assumed students have no prior computer programming experience, no prior experience with any formal problem solving technique, and no experience with algorithm development.
The specific programming tool and IDE is at the discretion of the instructor.
CS 1100 - Computer Architecture and Organization - 2 credits
Fall Semester
Computer Architecture and Organization provides knowledge of the internal operations of personal computing devices. Emphasis is placed on understanding the relationship among various computer parts and peripherals, troubleshooting problems, customer service skills, and safety practices. This course provides the student with a working knowledge of computer system hardware. Students learn the basic architecture of computers, including tablets and phones, and study the roles that various hardware components play in the system. Core components are explored as well as how data is effectively passed among the various components in a computer. (Same course as IT 1100).
Upon entering this course, it is assumed students have no prior knowledge of computers or computer hardware.
CS 2100 - Data Storytelling & Visualization - 3 credits
Fall Semester
Data Visualization is increasingly important in this era where the use of data is growing in many different fields. This course introduces students to the principles of design and techniques. Students will learn to evaluate the effectiveness of visualization designs, and think critically about each design decision, such as choice of color and choice of visual encoding. Learn how to develop the industry’s best practices and determine the best way to present a data set visually. Students will create their own data visualizations and learn to use Open-Source visualization tools .
CS 2210 - Computer Networking Theory - 3 credits
Fall Semester
This course focuses on the basic building blocks of a network emphasizing the five-layer OSI Model, a world-wide standard for networks. Topics include transmission, networking media, the TCP/IP Protocol Suite, network topologies (physical and logical), ethernet, the function and purpose of networking hardware, mobile technologies, and wireless technologies. Included in these topics are TCP/IP, IP protocol, IP addressing, DNS, and DHCP. This course also discusses ways malware disables networks and how software controlled networks remedy attacks using networking algorithms to create networking protocols. Students will learn computer networking jargon that enhances comprehension of articles and (online) coursework.
Upon entering this course, it is assumed students understand how computers work, including the function of the various components that comprise a computing device. It is also assumed students understand basic programming concepts to aid their understanding the various networking algorithms studied.
Prerequisites: CS 1000 and CS 1100, or permission of instructor.
CS 2300 - Scripting - 2 credits
Spring Semester
This course reinforces everything learned about programming in CS 1000,Introduction of Computer Science, and employs these concepts using scripting languages that are commonly used in web development as well as to implement macros in spreadsheets. This course further explores the difference between compiled languages, that are most frequently used in application development, and interpreted languages, that are most frequently used in web applications. It continues exploring proper use of computer science jargon while developing and implementing algorithms that solve problems. In addition, this course explores version control as part of maintaining an online repository.
Upon entering this course, it is assumed students understand the theory and implementation of the basic computer programming techniques as well as being able to utilize basic problem solving techniques to create algorithms. Students should know the meaning of current jargon. Students should also know how to create and maintain an online program repository.
Prerequisite: CS 1000 or permission of the instructor.
Prerequisite or corequisite: CS 2789.
CS 2780 - Web Programming I: Client Side Development - 3 credits
Spring Semester
This course, Client Side Development, teaches students how to create and publish web pages. Students learn the fundamental skills needed to design and then implement web pages. These skills include using markup language, style sheets, and scripting to create adaptive web pages for browsers, tablets, and phones. In addition, students will learn the meaning of currently used jargon and will learn how to maintain an online program repository. The specific programming tool and IDE is at the discretion of the instructor.
Upon entering this course, it is assumed students understand the theory and implementation of the basic computer programming techniques as well as being able to utilize basic problem solving techniques to create algorithms. Students should know the meaning of current jargon. Students should also know how to create and maintain an online program repository.
Prerequisite: CS 1000 or permission of instructor.
CS 2789 - Programming & Problem Solving - 4 credits
Spring Semester
This course builds on the concepts learned in Introduction to Computer Science. It expands the student’s knowledge of programming concepts in the context of a programming language and its integrated development environment. It introduces basic data structures and object oriented concepts. It reinforces algorithm implementation while introducing debugging, and test driven development. It explores program maintenance and expands the student’s awareness of Clean Code as it introduces S.O.L.I.D. programming. This course continues to explore computer science jargon that is essential in communicating within the profession. In addition, this course continues to develop basic problem solving analysis and critical thinking skills that aid the student when developing algorithms.
Upon entering this course, it is assumed students understand the theory and implementation of the basic computer programming techniques as well as being able to utilize basic problem solving techniques to create algorithms. Students should know the meaning of current jargon. Students should also know how to create and maintain an online program repository.
Prerequisite: CS 1000, IT 2100 or permission of instructor.
CS 3100 - Project Management - 3 credits
Fall Semester
This course introduces the art and science of technology project management. IT project management provides a competitive advantage for organizations seeking to improve their technology service capabilities. It is a defining factor of an organization’s success in implementing Information Technology initiatives. Students develop skills in project integration, scope, time, cost, quality, human resource, communications, risk, procurement, and stakeholder management as well as learning about all five process groups – initiating, planning, executing, monitoring and controlling.
Prerequisite: Any 2000-level AC/CS/IT course.
CS 3200 - Operating Systems Theory - 4 credits
Spring Semester
This course provides an introduction to the design and implementation of operating systems. It is intended for students with a basic background in computing systems. The first portion of the course presents the basic concepts of operating systems, which are platform independent. The second portion of the course covers specific issues with four operating systems in widespread use today. Topics covered include: concurrent processes, resource management, deadlocks, memory management, virtual memory, processor scheduling, disk scheduling, file systems, distributed file systems, micro kernels, multiprocessor operating system issues, and case-studies.
Prerequisite: CS 2789.
Pre- or corequisite: CS 3500.
CS 3500 - Object Oriented Programming - 3 credits
Fall Semester
This course reinforces Object-Oriented (OOP) Programming principles and techniques and introduces several OOP concepts in a different programming language and integrated development environment than used in previous courses . It explores abstraction and how it affects program design and program creation. In addition, it develops skills using encapsulation, polymorphism, reusable code, inheritance, and composition while continuing to implement these new techniques using Clean Code and S.O.L.I.D. program development. OOP also introduces basic graphical user interfaces and teaches the student how to properly create a usable user interface. This course continues to develop basic problem solving analysis and critical thinking skills that aid the student when developing algorithms. In addition, this course explores version control as part of maintaining an online repository.
Upon entering this course, it is assumed students understand, can discuss, and can implement the basic computer programming techniques as well as being able to utilize more advanced problem solving techniques to create substantive algorithms. Students should be able to discuss computer science using current jargon. Students should also know how to create and maintain an online program repository.
The specific programming tool and IDE is at the discretion of the instructor.
Prerequisite: CS 2789 or permission of instructor.
CS 3550 - Data Structures and Algorithms I - 3 credits
Fall Semester
In computing, the central concept is how data is stored, manipulated, searched, and retrieved. Computer science has developed a number of ‘data structures’ to facilitate manipulating and sorting data. A data structure is a collection of data Items that have some kind of relationship. The type of data structure determines exactly what the relationship is. This course explores those data structures and the algorithms used to manipulate and search them.
Prerequisite: CS 3500.
CS 3560 - Data Structures and Algorithms II - 3 credits
Spring Semester
A continuation of CS 3550, this course further investigates how data is stored, manipulated, searched, and retrieved. Computer programs process data, manipulating it into more easily searched and retrieved formats that can be efficiently stored in the computer’s memory. This course continues exploring different data structures and the algorithms used to manipulate them. In addition, this course provides the information needed so the software developer can employ the most efficient algorithms, making the program execute in less time.
Prerequisite: CS 3550.
CS 3570 - Software Engineering - 3 credits
Software Engineering is a systematic, disciplined, measurable approach to building and maintaining software. This class will help the student understand all of those things that are necessary to create “good”, “maintainable”, “extensible” solutions to problems. This course focuses on hands-on development of a “real world” project. Students will learn best practices and concepts of software development, including software requirements, feature specification, and techniques for software design and testing. Students will continue learning object-oriented design, the strengths and limitations of the object-oriented approach, and develop solutions that generally leads to good outcomes. This is not a programming course as it has no required programming language and will not teach programming techniques.
Prerequisite: CS 3500.
CS 3720 - Modern Application Development - 3 credits
This course will explore a variety of integrated development environments used to create applications.
Prerequisite: CS 3500.
CS 3730 - Writing Secure Applications - 3 credits
In addition to taking precautions to protect your mobile devices, it is important to add another layer of security by protecting the data itself (US Department of Homeland Security). Mobile devices have many levels of vulnerability. Physical theft, vulnerability of data stored on the device, and vulnerability of the data in transit between the device and various servers as well as the data in the server. This course will address securing the data within a mobile device and securing data while in transit.
Prerequisite: CS 3500.
CS 3740 - Cloud Computing - 3 credits
Cloud computing (the cloud) relies on sharing of resources to achieve economies of scale that are practically impossible to reach at lesser scales. Large is not nearly large enough to produce the efficiencies the cloud can produce. The foundation of cloud computing is cooperative use of infrastructure and shared services. Cloud resources are typically shared by multiple (frequently thousands to millions) users. The Cloud efficiently maximizes the effectiveness of the shared resources while dynamically reallocating resources based on individual user demand. “Moving to cloud” refers to an organization’s moving away from a traditional server model (buy dedicated hardware and software, maintain that hardware and software, and depreciate it over a period of time) to the cloud model (use a shared infrastructure and pay for hardware utilization and storage as needed).
Prerequisite: CS 3500.
CS 3750 - User Experience Design - 3 credits
User Experience Design (UX) is the third course in the four-course Web Development sequence and builds on what we learned in Web Programming I – Client Side Development. UX, also known as Human–Computer Interaction (HCI) includes studying, planning, designing and using of the interaction between humans (users) and computers. HCI has been described as the intersection of computer science, behavioral sciences, design, media studies, and several other fields. While most tools have a single purpose, the computer is a multipurpose device that has an open-ended, multi-dimensional, 2-way interaction with users. This course helps the student learn how to determine who will use their app, how they will use it, and how to improve the quality of the human-computer interaction. This course includes ADA requirements to make web sites available and useful to everyone. The specific tools are at the discretion of the instructor.
Prerequisite: CS 2780.
CS 3780 - Web Programming II: Server Side Development - 3 credits
This is the second course in a four-course Web Development sequence. In Web Programming I: Client Side we learned how to create a “front end”. For the web site to perform its service it must communicate with the “back end”. The “front end” working with the “back end” allows the web site to perform its intended task. Web Programming II: Server Side Programming provides students with the skills necessary to design and implement the logic necessary to create a “back end”. Students use programming and scripting skills to design and implement the programming logic that allows a web page to perform its function. Server side programming will be developed using current technology that employsing modern deployment environments in both the cloud and on-site servers. Skills include implementing client requirements, cloud programming, adapting to increasing and decreasing demand on a web site, creating and deploying APIs, as well as creating and utilizing a SQL database as part of “back end” programming. The specific programming tool and IDE is at the discretion of the instructor.
Upon entering this course, it is assumed students understand, can discuss, and can implement the basic web development techniques as well as being able to utilize more advanced problem solving techniques to create substantive algorithms. Students should be able to discuss computer science using current jargon. Students should also know how to create and maintain an online program repository.
Prerequisites: CS 2780, CS 2300, CS 3500, and AC 2020, or permission of instructor.
CS 3790 - Web Programming III: Web Project - 3 credits
Web Programming III: Web Project is the fourth course in the four-course Web Development sequence. Web Project brings together Client Side Programming (covered in Web I) that includes an excellent User Experience (covered in UX) and Server Side Programming (covered in Web II) to allow the web site to be fully functional. Since so many of today's Web Sites reside in the Cloud, the Web Project Web Site will reside in the cloud and will include a database to make the Web Project fully functional.
The specific programming tool and IDE is at the discretion of the instructor.
Upon entering this course, it is assumed students understand, can discuss, and can implement a web front end and a web back end as well as being able to utilize more advanced problem solving techniques to create substantive algorithms. Students should be able to discuss computer science using current jargon. Students should also know how to create and maintain an online program repository.
Prerequisites: CS 3780 and CS 3750.
CS 4500 - Senior Project I - 3 credits
Senior Project I is the first course in this two-semester capstone course emphasizes the application of modern computer science approaches to problem solutions. Over the two semesters, the students are required to complete a significant project in computer science or engineering. In addition to technical material required for successful completion of the project, the student will have to: Identify the problem; Research the problem’s background; Consider social, ethical and economic facts about the problem and the proposed solution; Respect intellectual property and patents; Identify requirements; functional and non-functional; Write a proposal; Create regular intermediate status reports; Make releases as appropriate; and Formally present the final solution and results.
Prerequisite: CS 3500 and senior standing, or permission of instructor.
CS 4501 - Senior Project II- 3 credits
CS 4501 is the second course in a two semester capstone course. Over the two semesters, the students are required to complete a significant project in computer science or engineering. The student will implement the plan created in the first semester to complete a real-world project. The project will be completed and deployed by the end of the second semester. Each student will create project documentation, appropriate user guides, and present their project.
Prerequisite: CS 4500 and senior standing.