CSC - Computer Science
Introduces the syntax of a high level programming language with emphasis on the programming environment and the use of the constructs of the language to write simple application programs. Topics include data types, sequential, conditional, and iterative statements, one and multi-dimensional arrays, simple graphical animation, the use of objects, and I/O. Programming assignments get progressively more complex and designed to demonstrate the use of computing in a variety of disciplines including the natural sciences.
A lab course designed for a hands-on exploration of Introductory Computer Programming. Meets two hours per week.
As a continuation of CSC 1043, this course deals with more advanced computing constructs and ideas, reinforced in weekly labs. Topics include object-oriented design, inheritance, polymorphism, exception handling, and recursion, along with more intentional development and debugging strategies. Linked lists are introduced as a viable option for implementing basic ADT's. Students gain experience in the design of graphical user interfaces, event driven programming, and larger programming projects.
A lab course designed for a hands-on exploration of Objects and Elementary Data Structures. Meets two hours per week.
Students transition to the C++ language and are introduced to additional data structures, including queues, stacks, trees, and graphs considering their implementation with both arrays and linked lists. Concepts are reinforced through weekly programming assignments.
A lab course designed for a hands-on exploration of Data Structures in C++. Meets two hours per week.
Standard data structures, including queues, stacks, trees, and graphs, as objects are defined and illustrated with associated dynamic storage management mechanisms. Introduces formal techniques to support the design and analysis of algorithms, focusing on both the underlying mathematical theory and practical considerations of efficiency. Topics include measuring the complexity of recursive and iterative algorithms, algorithmic strategies, the concept of intractability and the theory of NP. Emphasis is placed on non-numerical algorithms such as sorting, searching, graph and network algorithms both sequential and parallel. Concepts are reinforced through weekly programming assignments.
A lab course designed for a hands-on exploration of Data Structures and Algorithms. Meets two hours per week.
A course in Python programming that focuses on applications in data science, data analytics, and computational science. Programming exercises will emphasize data analysis techniques using modern third-party libraries. Students will also be introduced to UNIX based commands and utilities in data management and manipulation.
Students will learn the fundamentals of modeling complex multivariate data, using both foundational regression and logistic regression techniques, as well as the basics of supervised and unsupervised machine learning approaches. Additionally, students will learn to assess model fit and how to select appropriate modeling tools to identify relationships in complex data sets. Along with hands on instruction, students will work on real applications from industrial applications in business and science.
A systems course focusing on structural design and services of operating systems, along with the use of both GUI and command-line interfaces. Special attention is paid to process management and concurrency.
A systems course focusing on operating systems, topics include basic operating system design, process management, device management, memory management, and file systems. Students are introduced to the basics of software evolution, reliability, concurrency, security and protection in the context of single-core, multi-core, distributed, and virtual environments. Class members gain experience using both GUI and command-line interfaces. In the course of implementing the CPU scheduling simulation, students understand the importance of thorough system testing and attention to system specs as they try to make parts of their systems work with those designed by their teammates.
A brief introduction to a variety of computing tools for students already competent in computer programming. Students will gain experience in using Excel with VBA, Visual Basic, Microsoft Access, HTML and JavaScript. The goal of this course is to help expand student awareness of available computing tools and the strengths and weaknesses of each.
An introduction to data management in the context of scientific and business applications. Students will explore the data storage and manipulation requirements for these areas and learn to choose the correct data management tool for a given situation. Students will learn to design, create, and query relational databases using a Database Management System and SQL query language.
This course offers an in-depth treatment of the software development process. Software analysis and design study emphasizes an object-oriented approach that is introduced and contrasted with traditional design methodologies. CASE tools are used during the design process.
Students will learn to create effective static and dynamic graphics for representing complex data sets. Students will learn to apply the principles of effective storytelling with data, and best practices in data design and communication.
This course in programming languages covers language design issues and language translators. Laboratories give students a practical understanding of programming language concepts as well as give experience in programming using several programming languages.
This is an independent study course designed for students who wish to prepare for the CompTIA's Security+ certification exam. The course is intended for students who have already completed at least one course in computer security.
This is an independent study course designed for students who wish to prepare for the CompTIA's Network+ certification exam. The course is intended for students who have already completed at least one course in computer networking.
Study of an area of computer science not otherwise included in the curriculum. Topics are determined by the needs and interest of the students and faculty involved.
This course covers the fundamentals of current pipelined computer designs. Experience with assembly language programming and digital logic and circuit design will be used to motivate the need for certain facets of the more general instruction set architecture. Throughout the course, performance issues, hardware constraints, and memory hierarchy will be shown to inform processor design. Additional topics include integer and floating point arithmetic, I/O and considerations surrounding multi-core architectures.
This one-unit capstone course is a seminar in which students give lectures on topics of general interest in computer science. Issues related to vocation and calling are also discussed.
Study of a selected problem or topic under the direction of an instructor. The instructor and student propose the course of study.
This course presents the student with a strong experience in software engineering. Students, working in teams, investigate, design, implement and present to their classmates a significant software project. The project should solve a significant, complex and generalizable problem, dealing with constraints and trade-offs in the solution. The course includes study of project management concerns such as planning, scheduling, and assessing progress.
Independent research conducted under the guidance of a faculty mentor. The instructor and student propose the research topic.
The continuation of independent research conducted under the guidance of a faculty mentor. The instructor and student propose the research topic.
Students working in teams design and implement a project using a broad spectrum of computer science knowledge to meet the needs of a community organization or the university.