Most classes on North Campus will be held remotely through the end of the semester on December 12.
Courses Offered in Computer Science
Ready to take a class? Use the class search to find an upcoming class offered in Computer Science. Subjects in Computer Science include: BTE, CSC, ITC, ITE, FYCS. These are followed by a course number.
Note the subject and course number for the class(es) you like. You can search for available sections with public class search. Once you're ready to sign up and take a class, either sign in to Navigator or create an account.
CSC 105: Survey of Computer Science
This introductory course provides a broad-based overview of the fundamental areas within the filed of Computer Science. The course specially designed for students with no prior knowledge in Computer Science by introducing central concepts using breadth-first approach that surveys the key points of computer sciences. The areas surveyed include the historical development of modern electronic computers, Algorithm Foundations, Hardware World, Computer Organization, Operating Systems, Programming Languages, Computer Network, Information Security, Simulation and Modeling, Artificial Intelligent, Computer Graphics, and the Social Issues in Computing. This course is intended for students majoring or minoring in Computer Science. Four lecture hours per week.
Prerequisite: fulfillment of the Basic Mathematics Competency Based Skills requirement and ability to use standard computer software (e.g., operating system features, word processing, email, and web browsers). Limited to Computer Science majors and minors, or permission of the Department Chairperson
CSC 110: Software Design and Programming I
This course introduces a set of fundamental design principles and problem-solving techniques for the development of computer algorithms and their implementation as programs. Problem solutions are developed with the help of an appropriate modeling language and then coded in an object-oriented programming language. (Consult the Computer Science Department for the languages and tools currently in use.) Topics such as problem specification, object-oriented analysis and design, standard data types, control structures, methods and parameter passing, and design for reuse are presented through a study of specific example problems and solutions. Style, documentation, solution robustness, and conformance with specifications are emphasized throughout. This course is intended for students majoring or minoring in Computer Science. Three lecture hours and three hours of scheduled laboratory per week plus extensive programming work outside of class.
Prerequisites: High school algebra I & II, plus experience with a window-based operating system and the use of email and a word processor. Not available to students who have received credit for ITE 210. Limited to Computer Science majors and minors or permission of the Department Chairperson.
CSC 115: Software Design and Programming II
This course extends the treatment of object-oriented methodologies, languages and tools begun in CSC110. The emphasis is on the analysis of complex problems particularly those involving multiple design alternatives, and the use of class libraries. Fundamental strategies for algorithm design are presented and discussed. Specific topics include inheritance, polymorphism, recursion, stream and file I/O exceptions and~graphical interface programming Style documentation solution robustness and conformance with specifications are emphasized throughout. Three lecture hours and three hours of scheduled laboratory per week, plus extensive programming work outside of class.
Prerequisites: CSC110 AND ITE210.
CSC 246: Information Visualization
This course presents the basic science and techniques behind information visualization, introducing fundamental concepts concerning the use of color, image processing, computer graphics, and scientific visualization. The course describes the principles of visual perception, information data types, and visual encoding of data representations, and then focuses on the study, design, and development of visualization techniques for the analysis, comprehension, explanation, exploration, and manipulation of large collections of datasets. The latest visual representation methodologies and state-of-the-art visualization tools including programming language(s) and visualization libraries and toolkits will be applied in the course to help understand the subject and to design and generate visual interpretation of large amounts of complex data collected from diverse areas such as physics, chemistry, biomedical studies, meteorology, geospatial research, business, etc. Students will form teams to participate in group projects that emphasize interdisciplinary interaction and cooperation, in order to analyze and solve real world quantitative problems. Three lecture hours and three hours of scheduled laboratory per week, plus additional project time outside of class.
Prerequisites: One Mathematics course chosen from MAT108, MAT120, MAT150, and MAT208 and above; plus CSC110 or equivalent programming experience or permission of Department Chairperson.
CSC 260: Data Structures and Algorithms
Basic data structures such as stacks queues linked lists and trees are studied and allied to problems in data storage and manipulation. Applications include basic searching and sorting algorithms. Fundamental strategies for algorithm design are reviewed and extended. Design analysis implementation and quality assurance techniques are discussed. Three lecture hours and three hours of scheduled laboratory per week, plus extensive programming work outside of class.
Prerequisites: CSC105 and CSC115
CSC 263: Database Systems
This course is an in depth study of the underlying principles of database systems. Topics include data modeling and reduction, physical representations of data and access paths, and the semantics and theory of several major approaches to database organization, including relational and object-relational. Extensive discussion of query generation and optimization is included for at least one database system. Four lecture hours per week, plus programming work outside of class.
Prerequisite: CSC115. Not open to students who have received credits for ITE320.
CSC 276: Topics in Computer Science
This course is used for the exploration of emerging aspects of applied computer science. The course is intended for coverage of a single area or a strongly unified collection of topics not otherwise available in the Computer Science curriculum. The topic(s) will be announced prior to registration. This course may be repeated once for additional credit if topics covered are different. Three lecture hours per week. Course content and prerequisites are variable.
CSC 278: Scripting Techniques
This course presents rapid application development (RAD) techniques and their implementation using modern scripting languages. Methods for defining problems and their solutions will be examined, including task analysis and the development of design criteria. The course investigates the design of modern scripting languages, emphasizing the use of their particular attributes for developing solutions to complex problems. Fundamental programming language paradigms, type systems, and memory allocation and management strategies are presented and discussed, followed by comparative analysis of the languages utilized in this course and its prerequisites. Four hours of lecture per week, plus programming work outside of class.
CSC 279: C+C++
This course presents the particular goals, features, and strengths and limitations of the C and C++ programming languages. C's capabilities and limitations as a procedural programming language are examined, followed by an exploration of C++ as an object-oriented language that provides access to C's feature set. Topics include language grammar rules and their effect on programming style, operators, pointer and reference types, bit manipulation, memory management, and the utilization of the STL (Standard Template Library). Programming assignments will highlight the use of each language in appropriate contexts (e.g. C: systems programming, text processing; C++; program-solving strategies emphasizing OO and the use of the STL). Fundamental programming language paradigms, type systems, and memory allocation and management strategies are presented and discussed, followed by comparative analysis of the languages utilized in this course and its prerequisites. Four lecture hours per week, plus extensive programming work outside of class.
CSC 295: Computer Architecture and Organization
This course examines the basic principles of computer systems and how these concepts relate to the design of such systems. Both hardware and software concepts and the interdependence between them are dealt with. The determination of basic trade-offs and the related decisions are discussed. Logic level designs, data representations, computer circuits, fundamental computer operations, program creation, I/O programming, processing elements, links and interfaces, memory hierarchy, and memory management are covered. Four lecture hours per week.
Prerequisites: CSC105 and CSC115.
CSC 299: Concepts of Programming Languages
In this course students will study principles underlying how programming language features are defined, composed, and implemented. Additionally, models underlying different programming languages, effective use of languages, and an appreciation of their limitations will be explored. Fundamental programming language paradigms such as, imperative, functional, object-oriented, and logic programming are presented. Furthermore, programming language translation, static program analysis, type systems, and memory allocation and management strategies are studied and discussed. Three lecture hours per week, plus programming work outside of class.
CSC 300: Software Engineering I
This course will explore classic and modern software engineering principles and paradigms used to optimize the software development process for large software systems. Topics include software life cycle models, tools and techniques for software engineering and software development, the software development life cycle, historic and modern process paradigms, testing/evaluation techniques, and evaluation metrics. Group and individual design projects will be used to gain understanding of course topics and experience with development tools and team dynamics; writing experiences will be used to develop skills in analysis and rhetoric. Three lecture hours and three hours of scheduled laboratory per week, plus additional work outside of class.
Prerequisites: CSC260 and completion of a W-I course.
This course fulfills these general education curriculum requirements: Written Communication-Level II
CSC 315A: Computer Networks and Data Communications
This course provides an introduction to the basic principles of data communications and computer networks. Modulation techniques, multiplexing, transmission media, error control techniques, message formatting, switching and packet-switching techniques, various communication protocols, and networking and internetworking techniques are discussed. Four lecture hours per week, plus programming work outside of class.
Prerequisite: CSC260. Not open to students who have received credit for ITE215.
CSC 340: Artificial Intelligence
This course studies the theory and application techniques which allow a computer to "behave intelligently". Various operational definitions of intelligence are discussed, along with the concept of "mechanized intelligence". The course includes case studies of expert systems which solve engineering design problems, diagnose disease, and learn from their environment via natural language and/or visual interaction with a user. The role of planning, goal formation, search analysis and evaluation, and various forms of representation will be discussed extensively.
Four lecture hours per week, plus programming work outside of class.
Prerequisites: CSC105 and CSC260.
CSC 351: Software Engineering II
This course is an extension of CSC300 and focuses on the implementation of the software engineering principles covered therein. It will explore state-of-practice and cutting-edge techniques and tools related to the design, implementation, and maintenance of software systems. Topics include: design patterns, Model Driven Architecture (MDA), test-driven development, agile development, extreme programming (XP), and aspect-oriented design. An ongoing group project will be used to gain practical experience with current software engineering practices and a variety of IDEs and CASE tools. Three lecture hours per week and three hours of scheduled laboratory per week, plus programming work outside of class. Not open to students who have received credit for CSC301.
Prerequisite: CSC300; CSC263 strongly recommended.
CSC 367: Internship in Computer Science
This course provides an opportunity for broadening and augmenting a student's computer knowledge through placement in an organization or agency engaged in work directly related to a Computer Science student's academic interests. The number of credits will vary with the nature of the work and the time commitment involved. A student must meet Departmental requirements before registering for the course. Limited to Computer Science majors. Free elective credits only. This course may be repeated for credits, but the total number of Internship credits may not exceed 6. A total of 6 credits may be earned via
CSC267 and CSC367.
Prerequisites: CSC260 and permission of Department Chairperson.
Credits: 1.00 - 6.00
CSC 381: Operating System Principles
This course presents the evolution of computer operating systems, operating system functionalities, and current design and implementation techniques. Relationships between the operating system, computer architecture, and the user community are discussed. Three lecture hours per week. Not open to students who have received credit for CSC280.
CSC 415: Analysis of Algorithms
This course presents a variety of general algorithms in the computing field, examines the design and implementation techniques of useful and efficient algorithms, and analyzes algorithmic complexity. Topics include mathematical tools for algorithm analysis, numeric algorithms, tree structures, hashing techniques and recursion, analysis of searching and sorting algorithms, dynamic programming, graph representation and traversal algorithms, pattern matching, computation complexity, and computational geometry. Three lecture hours per week plus programming work outside the class.
Prerequisites: CSC260 and MAT214A.
CSC 425: Computer Graphics and Games
This course covers fundamental principles and applications underlying computer graphics and computer games. The course presents key aspects of computer graphics including graphics pipeline, scene graphs, 2D/3D geometric objects and transformations, viewing, shading, and modeling. Topics related to computer game development include game engines, animation, and behavior and interaction. The course will also introduce basic concepts of collision detection, illumination, game design and implementation, and will emphasize the application of the topics in game-related computer graphics programming projects with the use of graphics libraries and game engines and toolkits. Four lecture hours per week, plus programming work outside of class.
Prerequisites: MAT108 or MAT150 or any MAT course numbered 208 or above, plus CSC260
CSC 435: Computer and Network Security
This course offers a detailed analysis of security problems and the corresponding methods used to create practical, working solutions to problems in computer and network security. Topics include secure software design, architecture of security products, and organization and administration of information security solutions, secure operating systems, secure communication protocols, and secure software. Through laboratory exercises students will develop expertise in the use of contemporary security tools for protecting computers and computer networks. Three lecture hours and three hours of scheduled laboratory per week.
Prerequisites: CSC315A. Not open to students who have received credit for ITE315.
CSC 455: Machine Learning
This course provides an introduction to machine learning algorithms. Machine learning is focused on finding patterns in data to solve complex problems. Instead of explicitly programming computers to perform a task, machine learning lets us program the computer to learn from examples and improve over time without human intervention. The course covers a broad cross-section of models and algorithms for machine learning. Topics include data preprocessing techniques, supervised learning algorithms, unsupervised learning algorithms, deep learning algorithms, and reinforcement learning algorithms. Four lecture hours per week.
Prerequisite(s): CSC260 and MAT147
CSC 475: Distributed and Cloud Computing
This course introduces the design principles, system architectures and innovative applications of parallel, distributed, and cloud computing systems. It aims to acquaint students with supercomputers, distributed and cloud computing systems for high-performance computing, research, e-commerce, social networking, and web-scale Internet applications. Topics include clustering, virtualization, cloud platform architecture, service-oriented architecture, cloud programming, security in distributed and cloud computing, and the Internet of Things. Software development platforms and tools from several leading distributed and cloud computing vendors are used to gain hands-on experiences. Three lecture hours per week, plus programming work outside of class.
CSC 485: Robotics and Computer Vision
This course presents the basic science behind mobile robotics, robotic manipulation, and computer vision. The course examined key aspects of autonomous systems including sensors, map making, and path planning. The fundamentals of robotic manipulation will be presented, including coordinate transformations, manipulator, kinematics, and motion. Topics in computer vision include image formation, and sensing, region and edge extraction, feature identification, camera calibration and optical measurement. The course concludes with techniques for integrating vision, mobile robots, and manipulators into a complete system. Three lecture hours and three hours of scheduled laboratory time per week. Pre- or Co-requisite; MAT 221; Prerequisites: CSC260; CSC279 strongly recommended.
CSC 501: Directed Study in Computer Science II
General guidelines and timetables are the same as for CSC500, except that a CSC501 project may (but need not necessarily) be more oriented towards academic or theoretical study. Papers, tests, and oral examinations by the Directed Study Committee (or a designee) may take the place of some or all program design and coding requirements, if appropriate.
Prerequisites: CSC498. Additional prerequisites, which vary with the project, are at the discretion of the faculty supervisor for the project.
CSC 520: Computer Science Capstone Project Specification
The main purpose of this course is to develop a detailed proposal for CSC 521 Computer Science Capstone Project. The instructor will assist students in choosing appropriate project topics and refining their project proposals through all stages: the initial outlines, the formal specification, the proposal writing and the final presentation. The completed proposal will serve as the contract for CSC 521. A presentation of the completed proposal is required. This course is graded on a Pass/Fail basis. Open only to Computer Science majors with senior status. 1.5 lecture hours per week, plus project proposal preparation work outside of class.
Prerequisites or Co-requisite: CSC300 and senior status
CSC 521: Computer Science Capstone Project
A substantial project involving system design and implementation is carried out on an individual or group basis under the supervision of a faculty member. The specification for the project must have been completed in the prerequisite course CSC 520. A presentation of the completed project will be made to Computer Science faculty and students; writing experiences will be used to develop skills in analysis and rhetoric. The course involves periodic meetings, group discussions (if appropriate), and individual conferences. Open only to Computer Science majors.
Prerequisites: CSC 520 and permission of the Department Chairperson.
This course fulfills these general education curriculum requirements: Written Commun-Level III
ITC 117: Computing for the Professions
An examination of the problem solving process for individuals in an organizational setting using the latest application software. Emphasis will be placed on the use of spreadsheet and database software for problem solving, and their integration with other software tools, including text processing and presentation graphics. Planning, data collection, methodology, analysis of results and implementation will be included Three lecture hours per week.
ITC 183: Cyber-Security: A Personal & Professional Responsibility
How safe are you in the digital world? Hackers are trying to gain access to your private information, identity theft allows criminals to impersonate you while conducting criminal activity, viruses are trying to destroy your computer. Do you know the good practices you must follow to make your Internet experience safe? If not - this course is for you. It provides an overview of information security - the main issue, facing the Internet community today. Computers worldwide are under attack by hackers, threatening our financial well being, hurting the companies we work for, and even endangering the whole infrastructure of our society. This course presents a user level view of computer and network security and includes discussion of topics you must know o be responsible (personally and professionally) members of our social environment as individuals and work force participants.
This course fulfills these general education curriculum requirements: Pers Growth & Responsibility
ITC 241: Spreadsheet Design and Analysis
Using the latest spreadsheet software, students will study the commonly used spreadsheet functions such as financial analysis, data and look-up tables, templates, macros, pivot tables and complex problem solving. Techniques for designing, using and analyzing spreadsheets for practical problem solving in various professions will be emphasized. Three lecture hours per week.
ITE 100: Fundamentals of Information Systems and Technology
This course provides an overview of fundamental areas within the field of Information Technology, introducing basic vocabulary, central concepts, and typical applications. The topics discussed include computer hardware, software, communications fundamentals, system development, information management, workforce considerations, and related societal, legal and ethical issues. Three lecture hours per week. Pre-/co-requisites: Fulfillment of the Basic Mathematics Competency Based Skills requirement and ability to use standard computer software (e.g., operating system features, word processing, email, and web
ITE 105: Problem Solving with Algorithms
This course serves as an introduction to programming. Using flow charts, pseudo-languages, and software development strategies, students will learn techniques for identifying and selecting solutions to problems by designing algorithms, using stepwise refinement and structured programming techniques. Students will design algorithms using pseudo-code, implement algorithms using a simplified programming environment, and participate in hand-on debugging, testing and documenting activities. Topics include principles of programming, the logic of constructing a computer program, integrating modules into a cohesive application, and fundamentals of programming languages. In-class exercises allow students to practice these techniques while solving assigned problems. Three lecture hours per week. Recommended for students with no prior programming experience.
ITE 200: Computer Hardware and Software
This course surveys the fundamentals and skills required to understand and work with computer hardware and software. Topics include system architecture that goes into details of the roles and assembly and disassembly of various computer parts. System diagnostics, upgrades, maintenance and documentation are taught as the next steps. Instruction includes lectures, demonstrations and hans-on work. Three lecture hour per week.
Prerequisites: Fulfillment of the Basic Mathematics Competency Based Skills requirement and ability to use standard computer software (e.g., operating system features, word processing, email and web browsers).
ITE 210: Introduction to Programming
This course introduces a set of fundamental programming concepts and problem-solving techniques for the development of computer programs using a high level programming language. Topics such as problem specification, standard data types, control structures, methods, and design for reuse are presented through a study of specific example problems and solutions. Style, documentation, solution robustness, and conformance with specifications are emphasized throughout. Three lecture hours and three hours of scheduled laboratory per week. Prerequisites: ITE105. Not available to students who have received credit for CSC110.
ITE 215: Computer Networks
This course begins with an introduction to computer networks, including hardware, software, troubleshooting, and maintenance. IT professionals need to understand various components of the networking infrastructure of an organization as well as the various protocols and standards used to implement these infrastructures. TCP/IP stack will be presented with discussion of OSI layered model and data/control flow through each layer using top-down or bottom-up approaches. Understanding of networking protocols, TCP/IP stack and troubleshooting, and maintenance of networks will be given through class lectures as well as labs. Three lecture hours and three hours of scheduled laboratory per week.
Prerequisites: ITE100, ITE105. Not available to students who have received credit for CSC315A.
ITE 230: Web Systems
This course provides an introduction to web systems and technologies, including an overview of architecture of a website, implementation, evaluation and testing of web-based applications and programming aspects of web development (web content development, markup languages coding, client-side and serve-side application development). Topics include understanding of Web standards, description of basic components of a website, general principles of web interface design and development, use of databases, multimedia, and structure of the interface between a website and the Internet. Social, ethical and legal issues of web usage (e-commerce, social networks, etc.,.) will also be discussed. Three lecture hours and three hours of scheduled laboratory per week.
Prerequisites: ITE100, ITE105
ITE 315: Information Security
The course covers a unified view of information security that examines the closely related areas of information security, software security, networks, web security and forensics using a common set of underlying security principles. Students will get an understanding of how to model secure environments and how to implement these starting from standalone computers, operating systems and then going towards distributed networks and web. Each of the security areas is examined in sufficient detail for students to understand the complexity of modern threats and the corresponding sophistication of the software and hardware that is designed to counter these threats. Three lecture hours and three hours of scheduled laboratory per week.
ITE 320: Information Management Systems
It is the role of the IT Professional to develop, deploy, manage and integrate data and information systems to support the organization. At a fundamental level,
information Management Systems address these issues by providing mechanisms of storing, searching, updating, and retrieving information. Underlying all of these functionalities are the concepts of a file and file organization, upon which is built the concept of an information management system. This course Presents the fundamental concepts of data organization architectures, database management system models and query languages, and principles of data modeling. Three lecture hours and three hours of scheduled laboratory per week.
ITE 340: Human Computer Interaction
This course is an introduction to the fundamentals of Human Computer Interaction (HCI), a discipline that focuses on designing highly usable software systems. The study of human-computer interaction enables system architects to design useful, efficient, and enjoyable computer interfaces. This course teaches the theory of human psychology, principles of computer systems, user interface design procedure, and programming practices behind effective human interaction with computer. The course considers the interdisciplinary nature of HCI and introduces various issues involved in using technologies for different purposes in the organizational and social contexts. The course will thus provide a background for students to practice system design, selection, evaluation, and use the knowledge of human characteristics, interactions styles, user and task analysis, and design and evaluation procedures. Three lecture hours per week.
ITE 350: It System Integration, Administration, and Management
Virtually all organizations have IT needs. It is the role of the IT professional to design, select, apply, deploy and manage computing systems to support the organization. This course presents methods, tools, and techniques used to design, build, and administer a viable IT environment. It assumes prior knowledge of computer architecture, IT fundamentals, networking, programming, and information management. Topics to be presented include installing and configuring operating systems and applications, IT administrative activities, administrative domains, software requirements and testing, software acquisition and sourcing, integration and deployment, project management, testing and quality assurance, and system architecture. Three lecture hours per week and three hours of scheduled laboratory per week.
Prerequisite: ITE315, ITE320, ITE230.
ITE 410: Advanced Computer Networks
This course offers an in-depth look at the top-down approach to networks, taking into consideration the requirements and goals, and understanding the methodologies and techniques involved in a complex network infrastructure. Topics include: identifying the needs and goals for building networks, logical and physical network design, addressing and numbering, switching and routing protocols, developing network security strategies, and selecting technologies and devices for campus and enterprise networks. Four lecture hours per week.
ITE 420: Database Administration
A database administrator (DBA) directs or performs all activities related to maintaining a successful database environment. This course demonstrates the fundamental tasks and functions required of a DBA. The topics of this course include understanding the role of DBA, creating the database environment, application design, database change management, data availability, data integrity, database security, database management system utilized, the concepts and procedures presented in this course are typical for any database management system server. Four lecture hours per week.
Prerequisite: ITE320 or by permission of the Department Chair person.
ITE 501: Information Technology Capstone Project Specification
This course sets up a typical environment for the development of a detailed proposal for software- or hardware- Information Technology based project. The instructor will assist each student in choosing an appropriate project topic and in refining the project proposal through all stages from initial outline to final formal specification and presentation. The completed proposal will serve as the
contract for the ITE505 Information Technology Capstone Project. A presentation of the completed proposal is required. This course is graded on a Pass/Fail basis. Open only to Information Technology majors. One and a half lecture hours per week, plus project preparation work outside of class.
ITE 505: Information Technology Capstone Project
A substantial project involving system design and implementation is carried out on an individual or group basis under the supervision of a faculty member. The specification for the capstone must have been completed in the prerequisite course ITE501. A presentation of the completed project will be made to the department faculty and students; writing experiences will be used to develop
skills in analysis and rhetoric. The course involves periodic meetings, group discussions (if appropriate), and individual conferences. Open only to Information Technology majors.
Prerequisites: a W-II course, ITE501, and permission of the program coordinator/chairperson.
This course fulfills these general education curriculum requirements: Written Commun-Level III