CSCI: Computer Science (Undergraduate)
This introductory course provides the student with a comprehensive overview of computer systems, introducing computer hardware, system and application software, networks, information systems, and computer security. Students will explore topics in computer hardware, peripheral devices and their functions; computer operating systems and software applications, digital media, data, and file management; fundamentals of networks, Internet and web technologies; basics of computer programming, database, information systems; computer security, privacy, ethics and access to technology. Students will also develop an understanding of computers and related technology and how they are being used in the world today. Notes: Students must have regular access to a personal computer with access to the Internet, a text editor and word-processing application, and a web browser.
This study begins with an introduction to the use of a database. A good database design starts with a list of the data that you want to include in your database. Students will learn the principles of designing the structure of the tables in a database. They will also engage in developing other related tables, creation of questions needed for the database to answer, and normalization of a database. Highly Recommended (not required): Familiarity with computer applications.
This introductory course provides the student with a comprehensive overview of computer networks, introducing network protocols and standards, physical media, topologies, network devices and communication infrastructure. Students will explore in-depth the most important concepts in contemporary networking, such as TCP/IP, Ethernet, wireless transmissions, virtual networks, and security. After completing the course students will be able to select an appropriate network design, hardware, and software for a given environment and build a simple network, maintain, troubleshoot, and manage the network. Notes: Students must have regular access to a personal computer with access to the Internet, a text editor and word-processing application, and a web browser. This course was previously SMT-272124 Introduction to Networks.
Students have the opportunity to develop individualized studies with their mentor in Computer Science (CSCI). Registration for this class must be approved by the student’s mentor.
This course deals with object-oriented programming (OOP) using C++. The main topics of discussion include C++ language features and the implementation of the OOP features of encapsulation, classes, inheritance, polymorphism and data hiding. C++ programming examples will be discussed and students will work on hands-on C++ programming assignments. Prerequisite (must complete before registering): College Mathematics or equivalent Highly Recommended (not required): An introductory-level college mathematics study that included algebra and problem solving. Notes: Students must have the ability to install software. This course is sufficient to address the programming component of Computer Science concentration guidelines. This course was previously SMT-272504, Introduction to C++ and OOP.
Explore computer programming and the object-oriented language, Java. This course introduces techniques and processes that are necessary in a professional software development setting. A background in programming is not assumed. Topics include modern software development tools including debuggers; general programming techniques; object-oriented programming; maintainability; algorithm design; and event-driven, graphical interface design. Students will enhance their ability to develop software in industry. Prerequisite (must complete before registering): College Mathematics or equivalent Highly Recommended (not required): An introductory-level college mathematics study that included algebra and problem solving Notes: Students must have the ability to install software. This course is sufficient to address the programming component of Computer Science concentration guidelines. This course was previously SMT-272984, Introduction to Object-Oriented Programming: JAVA.
Python is a powerful programming language that is relatively easy to read. It is one of the fastest-growing programming languages and is becoming an integral part of many professions, from finance and insurance to technology, healthcare, retail, and e-commerce. This course provides a basic introduction to the language of Python and its programming environment as a foundation for other courses and future jobs in the field such as Data Analytics. In this course, students will learn the syntax of the Python programming language, develop practical applications, and interpret data that goes beyond Excel using Python. Students will also learn collaboration and teamwork with a team project. Prerequisites: None. Corequisites: None.
Students have the opportunity to develop individualized studies with their mentor in Computer Science (CSCI). Registration for this class must be approved by the student’s mentor.
As computers become ever more present and interconnected in modern society, the IT professional needs to be more and more concerned with the issues of levels of service, security and recovery. This course will cover the topics of management and security; quality of service and system performance; viruses, worms, trojan horses and denial-of-service; firewalls; and strategies for ensuring appropriate levels of security. A student project of sufficient rigor will be the core of this course. Prerequisite (must complete before registering): Introduction to Networks Highly Recommended (not required): Familiarity with the core concepts of networking, including awareness of the existence of protocols; an understanding of hardware such as routers, hubs and switches, common operating systems, basic systems and network security. This knowledge can be gained in Introduction to Networks. Specifically, students in this course should have knowledge in the following areas: Basic concepts of networks, basic hardware and software concepts; elementary algebra. This course was previously SMT-273324, Computer Operations and Security.
Students will explore the structure and function of computers and develop a deep understanding of the nature and features of contemporary computer systems. The computer system is characterized in terms of structure - the way in which components are interconnected, and function - the operation of the individual components. The course will cover CPU architecture, memory, I/O system, primary and secondary storage, numbering systems, computer arithmetic and digital logic, RISC, CISC, multicore architectures, different levels of parallelism, and performance related issues. Assumptions about surrounding courses: Students should have an understanding of computers, data structures and algorithms, and discrete mathematics. Notes: Students should select either this course, or Computer Organization and Assembly Language as part of their degree program as there is substantial overlap in the course curriculums.
Attributes: Liberal
This course explores the relationship between hardware and software. Students will learn how the electronics of a computer form the basis of computer programming. Topics include systems of data representation, comparison of machine languages, the structure of memory, the operation of the Arithmetic Logic Unit, real and virtual memory, and race conditions. Assembly language programming projects reinforce the concepts of registers, the binary representation of numbers and the underlying machine language. Assumptions about surrounding courses: Students should be competent computer programmers, and understand data structures and algorithms and discrete mathematics. Notes: Students should select either this course, or Computer Organization and Architecture as part of their degree program as there is substantial overlap in the course curriculums.
Data structures and algorithms have been found by programmers to be applicable to many different programming situations. This course focuses on algorithms for searching and sorting, and on stacks, queues and trees, which are specific structures for storing data. Prerequisites: Computer Programming II or Object-Oriented Programming Assumptions about surrounding courses: The Object-Oriented Programming course should be in the same language as this course is using. Student should verify which language is being used. This course was previously SMT-274304 Data Structures and Algorithms.
This course builds on lower level topics in process synchronization, inter-process communication and file system organization. It starts with a brief historical perspective of the evolution of operating systems over the last fifty years and then covers the major components of most operating systems, with particular focus on the advanced topics in concurrency, deadlock protection, multiprocessor scheduling, computer system modeling and virtual memory management etc. Simulated lab experiments will be used to illustrate key concepts. Assumptions about surrounding courses: Experiential knowledge of the functionality of operating systems; familiarity with operating systems; experience in systems programming; or knowledge of network systems. This course was previously SMT-273644 Operating Systems
This course provides the beginning programmer with complete coverage of all major introductory programming topics, with an emphasis on the Visual Basic 2010 programming language. Visual Basic applications are presented in a real-world setting. Students learn how to plan and create their own interactive windows applications. GUI design skills and object-oriented programming concepts are emphasized throughout the course.
This course builds on the previous prerequisite course, Programming in Java or Introduction to Object-Oriented Programming: Java. Topics include multi-threading, JDBC, collections, methods and classes, applets and Java Web Start, multimedia, networking, Java Server Faces, Ajax Enabled JSFs, Web Services and Java 2D. Students will learn advanced syntax, capabilities and APIs of the Java programming language and of the Java Standard Edition (SE) platform. The course exposes students to advanced programming topics and techniques needed to build enterprise software systems. Prerequisite (must complete before registering): Introduction to Object-Oriented Programming: Java; Data Structures and Algorithms Notes: Currently, this course is only offered through the College's International Programs. It is recommended that students complete the Strategies in Learning (SIL) course before taking this course.
Cross-listed with INFT 3997.
This course emphasizes writing efficient program code through proven techniques in object-oriented programming (OOP) and event-driven programming. An introduction to the C# language is provided in the context of object-oriented analysis design concepts making use of UML. In addition to basic C# language constructs, the course teaches Lambda expressions, LINQ applications and generic collections. Advanced topics in building the GUI and event handling with Windows Forms and Windows Presentation Foundation applications are covered. It teaches software development employing the C#.NET language in the environment of Visual Studio. Prerequisites (must complete before registering): Introduction to C++ & OOP or equivalent Notes: Currently, this course is only offered through the College's International Programs.
This course teaches designing, developing, testing, debugging, and distributing professional level Android applications. It presents major concepts of this leading-edge mobile computing technology in the context of complete working Android applications. The course provides a smooth transition from traditional Java software development to mobile development in one of its most promising platforms, Android. Prerequisite (must complete before registering): Introduction to Object-Oriented Programming: Java or equivalent. Notes: Currently, this course is only offered through the College's International Programs.
In this course, students will configure network equipment, install network tools and accomplish tasks and duties similar to what network administrators, network and help desk technicians and IT installers do in their daily work. Students will cement the knowledge they gained in previous data communication networking coursework by practicing what they already know in theory, as they install and configure network devices, such as switches, routers, firewalls, network management software and other network related tools in a lab environment. Prerequisite (must complete before registering): Data Communications and Networking or equivalent. Notes/Comments: Currently, this course is only offered through the College's International Programs.
The content of this course will vary by term and section. Students may repeat this course for credit as long as the topic differs. Please refer to the Term Guide for course topic offerings.
Attributes: Liberal
Students have the opportunity to develop individualized studies with their mentor in Computer Science (CSCI). Registration for this class must be approved by the student’s mentor.
Students will explore the impact of the new wave of advanced computing, such as virtualization technologies, and cloud and mobile computing, as services and delivery models on business and the society. Topics include abstraction, virtualization, hypervisors, load balancing, and utilization of virtualization technologies at different system levels. Students will develop a broad understanding of cloud computing service and delivery models, research directions in architecting modern data center computing, exploit opportunities afforded by modern cloud computing such as scalable distributed systems and mobile applications, data storage, security, monitoring, fogging, and more. Assumptions about surrounding courses: Students should have a basic understanding of computers, networks, database applications, along with a fundamental understanding of computer use in an organizational environment.
Attributes: Liberal
Computer scientists and software engineers need to learn formal methodologies for designing robust and reliable software systems in order to effectively and efficiently build and maintain these large and/or complex software projects. In this course, students will learn the concepts of software engineering including software processes, requirements specification, software verification and validation, and software evolution. Prerequisites (must complete before registering): Computer Programming I or equivalent; Data Structures and Algorithms or equivalent; Discrete Mathematics or equivalent Assumptions about surrounding courses: -An understanding of the general principles and characteristics of programming and programming languages such as one would gain in an introductory programming course or through professional experience. -A familiarity with data structures and the ability to identify appropriate data structures along with an understanding of the principles of algorithm design including the ability to design correct and efficient algorithms such as one would gain in a course on Data Structures and Algorithms or through professional experience. -A working knowledge of functions, relations, and sets; formal logic; proof techniques; basics of counting; graphs and trees; and discrete probability such as one would gain in a course on Discrete Mathematics. -It is recommended that students also have a familiarity with the social context of computing and professional and ethical responsibility such as one would gain in a course on Social, Professional & Ethical Issues in Computing. This course was previously SMT-274144 .
Attributes: Liberal
Theory of Computation is a capstone course for computer science. It is concerned with theoretical aspects such as regular languages, finite automata, context-free languages, pushdown automata, the Church-Turing thesis, Turing machines, decidability, the halting problem, time complexity, and P and NP classes. Students will improve their ability to learn mathematics independently and improve their ability to create proofs. Prerequisite (must complete before registering): Discrete Mathematics Assumptions about surrounding courses: It is essential to know general methods of proof and have some prior experience with proving theorems. To achieve this, the contents of Discrete Math taken at the advanced level are essential. A course in proofs is recommended. Notes: Theory of Computation is usually a requirement for graduate school in Computer Science.
Attributes: Liberal
This course provides the student with the knowledge and skills necessary to create the components/pages of a website that provides the capability to sell products to the consumer or business, collect payment due and provide the data to the other systems and applications that will complete the order process. Topics include setup and configuration in Dreamweaver of a testing environment with PHP/ MySQL and Apache web, fundamentals of PHP and good database design, usage of Dreamweaver behaviors in designing dynamic web pages, and using ready custom-built PHP functions. Prerequisite (must complete before registering): Introduction to Object-Oriented Programming: Java; Data Structures and Algorithms Notes/Comments: Currently, this course is only offered through the College's International Programs. It is recommended that students complete the Strategies in Learning (SIL) course before taking this course.
Students have the opportunity to develop individualized studies with their mentor in Computer Science (CSCI). Registration for this class must be approved by the student’s mentor.