Computer Science
Computer Science Courses

CPSC 140    INTRODUCTION TO COMPUTER PROGRAMMING FOR NON-MAJORS (3)
This course is designed for the non-major and does not count toward the computer science major or minor. It covers the basics of computer programming, including structured programming constructs and object-oriented programming. Students will develop Windows-based applications.
    Prerequisite: MATH 120 or placement above MATH 120

CPSC 155    COMPUTER PROGRAMMING (3)
An object early introduction to programming. The course emphasizes the fundamentals of object-oriented programming (classes, objects, methods, inheritance, polymorphism, libraries, implementation, interfaces, encapsulation) and at the same time introduces other software engineering and programming concepts (conditional statements, iteration, input/output, arrays, types, files, collections).
    Prerequisite: MATH 120 or placement exam above MATH 120

CPSC 165    COMPUTER PROGRAMMING II—DATA STRUCTURES (3)
This course focuses on commonly used data structure, including stacks, queues, linked lists, and binary search trees. Students will study each data structure’s design and implementation, use data structures in applications, and consider data structures from a comparative perspective. Topics covered include array handling, sorting and searching algorithms, recursion, inheritance, abstract classes, and interfaces.
    Prerequisite: CPSC 155

CPSC 245    OPERATING SYSTEMS (3)
This course provides an introduction to computer operating systems, their role, organization, and control. Topics discussed include resource allocation and management, scheduling algorithms, process management, memory management, process synchronization mechanisms, concurrent programming, and techniques employed in multiprogramming and multiprocessing environments. In addition, a special emphasis is placed on contemporary operating systems.
    Prerequisites: CPSC 165 and MATH 240

CPSC 275    WINDOWS-BASED APPLICATION DEVELOPMENT (4)
The main objective of this course is to teach the student the concepts of Windows-based application development using Visual Studio and the .NET Framework. Students will use both C# and Visual Basic .NET. Besides creating standard Windows-based applications in .NET, students will also create front ends to databases, games, and build their own controls.
    Prerequisite: CPSC 165

CPSC 280    WEB DEVELOPMENT (3)
Students will design and develop websites using client-side technologies. While much of the course will focus on HTML, CSS and JavaScript, other technologies may also be surveyed. In addition, the course will provide an overview of web architecture, web clients and servers, browsers and website design principles.
    Prerequisites: CPSC 155 and sophomore standing

CPSC 285    DATABASE DESIGN AND PROGRAMMING (3)
The study of relational database systems. Topics include SQL, the relational model, security, normalization, functional dependecy and entity relationship diagrams, database design, recovery, transaction processing, ethics and client server systems. The course also covers DBMS packages, report generations and the use of Visual Studio and .NET languages as a front-end to database systems.
    Prerequisite: CIS 120 and CPSC 275

CPSC 299    SERVICE LEARNING (1)
Students will perform computer-related volunteer work for one semester, under the supervision of an instructor. Students will work for at least 45 hours on their service learning project. This course can only be taken on a satisfactory/fail basis.
    Prerequisites: CIS 120 and CPSC 280

CPSC 312    NETWORK PROGRAMMING (3)
Students will study how networks operate and how network applications are written. The course will include an overview of networking topics such as transmission protocols and routing, and will focus on software running over these networks: building network programs using sockets and higher-level networking objects, and designing application protocols. The course also includes an introduction to cloud computing.
    Prerequisite: CPSC 275

CPSC 320    SECURITY (3)
This course is an examination of information security, including the discussion of network security and application security. The course covers the theory and practice of information security, including security principles, practices, methods and tools. The course covers the spectrum of information security, from rish assessment to preventing, detecting and responding to breaches of security.
    Prerequisite: CPSC 165

CPSC 321    WEB DEVELOPMENT II (3)
Students will design and develop server-side web applications. Programming using server-side technologies including ASP.NET, Ajax, PHP, XML. Web applications that use database platforms will be a primary focus. The role and use of web servers and database servers will be central to the course. Multi-tier applications will be developed and content management systems will be introduced.
    Prerequisites: CPSC 280 and CPSC 285

CPSC 323    ADVANCED DATA STRUCTURES AND ALGORITHM ANALYSIS (3)
This course focuses on the design and analysis of efficient algorithms. Major topics include advanced data structures; tree balancing algorithms; graph theory; dynamic programming; additional techniques for sorting and searching, including hash coding techniques; automata theory; NP-completeness and program verification.
    Prerequisites: CPSC 165 and MATH 240

CPSC 325    DATABASE ORGANIZATION AND DESIGN (3)
The study of relational database systems. Topics include SQL, the relational model, security, normalization, functional dependency diagrams, optimization, entity relationship diagrams, database design, recovery, transaction processing, ethics, multi-user systems, and client server systems. The course also covers DBMS packages, report generators, and the use of Visual Studio and .NET languages as a front-end to database systems.
    Prerequisites: CIS 120 and CPSC 275

CPSC 361    COMPUTER ARCHITECTURE (3)
This course presents an introduction to the functional elements and structures of digital computers. Topics include basic gates and circuits, CPU design and organization, registers, buses, I/O device interfaces, hardware interrupts, pipelining, memory structures and organizations.
    Prerequisites: CPSC 165 and MATH 240

CPSC 415    ADVANCED DATABASE DEVELOPMENT (3)
This course explores advanced topics in client server and database development. It covers the programming and administration of database systems and includes views, stored procedures, triggers, indexes, constraints, security, roles, logs, maintenance, transaction processing, XML, reporting, and other relevant topics. Students will be exposed to several database packages and will do considerable database programming.
    Prerequisite: CPSC 285

CPSC 425    ARTIFICIAL INTELLIGENCE (3)
This course introduces the student to the basic concepts and techniques of artificial intelligence (AI). Topics include intelligent agents, knowledge representation, knowledge engineering, natural language, vision systems, robotics, and machine learning. Students will also learn to write AI programs in AI languages.
    Prerequisite: CPSC 323 or concurrent enrollment

CPSC 430    SYSTEMS ANALYSIS AND DESIGN (3)
Study of the information systems development process, from scope definition through implementation, with focus on methods for capturing system requirements, modeling requirements, and performing systems design. Different methodologies for systems development are looked at. Major topics include use case development, data modeling, process modeling, and object-oriented analysis and design. Purpose and usage of entity relationship diagrams, data flow diagrams, and several UML diagrams are covered.
    Prerequisite: CPSC 285 and senior standing.

CPSC 434    PRINCIPLES OF UNIX (3)
This course will introduce the students to UNIX and systems programming. Students will use UNIX commands, shell scripts, PERL, and C. Students will use Linux to solidify their understanding of operating systems concepts.
    Prerequisite: CPSC 245

CPSC 446    MOBILE APPLICATIONS DEVELOPMENT (3)
Students will design and code mobile applications using the latest in wireless application development technologies. Topics include wireless mobile platform operating systems and micro-browsers, the Android SDK, the iPhone SDK, the Windows .NET mobile development environment.
    Prerequisites: CPSC 275 and CPSC 280

CPSC 447     GAME DEVELOPMENT (3)
This course introduces the student to game development. Students will learn how to use the XNA toolset to develop different types of games for multiple platforms—the personal computer, the Xbox, and the Windows Phone.
    Prerequisite: CPSC 275

CPSC 450    INDEPENDENT STUDY (1-4)
Independent reading and/or research on special topics in computer science.
    Prerequisite: Consent of faculty supervisor

CPSC 455    INTERNSHIP (1-8)
Experience as a computer professional under the joint supervision of a faculty member and an assigned business manager.
    Prerequisites: Junior or senior standing in computer science and the permission of the department

CPSC 461    ADVANCED TOPICS IN COMPUTER SCIENCE (1-3)
Topics of current interest. May be repeated for credit.
    Prerequisite: Approval of the instructor

CPSC 471    SENIOR PROJECT (3)
A comprehensive, independent project in the senior year under the guidance of a computer science faculty member. It includes design, development, coding, testing, and documentation of a software application.
    Prerequisites: Senior standing and consent of department

CPSC 475    SENIOR SOFTWARE DEVELOPMENT EXPERIENCE (3)
Students will work in teams to develop, test and deliver substantial information systems begun during Systems Analysis and Design.
    Prerequisites: CPSC 321, CPSC 430 and senior standing

INDEPENDENT RESEARCH OR CREATIVE INVESTIGATION (1-3)
Introductory, Intermediate, Advanced, Senior Thesis Independent Research or Creative Investigation is a course in which students collaborate with faculty mentors on an ongoing faculty research project or conduct an independent project under the guidance of a faculty member. This directed undergraduate research or creative investigation culminates in a conference presentation, journal article, or other creative/scholarly project.
    Prerequisite: Consent of instructor