CPSC - Computer Science

CPSC-19000 Computer Applications

This course offers an overview of computer systems, including how to interact with an operating system, and teaches students how to use productivity applications such as Word, Excel, PowerPoint, and Access.

3

CPSC-194XX Workshop in Computer Science

These workshops are intended to give the student a working knowledge of software/skills such as Microsoft Office PowerPoint for Windows and Mac, Mail Merge, and Presentations Software. The student will be introduced to presentation software and will understand the software at an introductory level, be able to create and edit software presentations, and research and obtain web-based content and integrate it into their presentations.

1

CPSC-196XX Topics in Computer Science

This series of 100-level seminars focuses on various topics related to computer science and is usually offered on weekends.

1-3

CPSC-20000 Introduction to Computer Science

This course explores the field of computer science. It provides an overview of computer architecture, networking, data organization, information security, and computational theory. Students will be introduced to fundamental concepts underlying all of computing, such as algorithms, abstractions, and how computers represent numbers, text, images, and sound. Students will learn the basics of programming and computational problem solving.

3

CPSC-21000 Programming Fundamentals

A study of computer organization, data types, expressions, logical structures, subprograms (subroutines and functions), recursion, structured data types (arrays and records), dynamically allocated data, array-based lists, linked lists, stacks, queues, graphs, trees, sorting, and searching.

3

Prerequisites

CPSC 20000, CPSC 31500, or CPEN 10000

CPSC-22000 Introduction to Unix

Students are introduced to the Unix operating system, including installation, configuration, administration, and on-line documentation. Networking with TCP/IP is presented, together with an introduction to apache (http server) and samba (file and printer server). Security controls in Unix and operating system virtualization are also discussed.

3

CPSC-23000 Visual Basic

This course introduces computer programming using the Visual BASIC programming language with object-oriented programming designs and principles. The Microsoft .NET framework is used to develop applications. Emphasis is placed on event-driven programming methods, including creating and manipulating objects, classes, and using object-oriented tools such as the class debugger. An introduction to databases and ASP .NET applications is also discussed.

3

CPSC-23500 Programming for Data Analysis

Disciplines and industries are collecting increasing amounts of data to help guide their work. This course presents programming techniques for working with large data sets. It teaches computer programming from the perspective of developing tools to analyze data.
3

Prerequisites

MATH 21500, MATH 31400, MATH 31500 OR PSYC 30300

CPSC-24500 Object-Oriented Programming

Students will learn to design and develop software using the object-oriented approach. Topics include encapsulation, inheritance, polymorphism, abstraction, and patterns. Students will learn how to use an SDK to develop desktop and web applications that provide data processing and visualization services. Students will also learn how to manage threads and networking connections in software they write.

3

Prerequisites

CPSC 21000

CPSC-24700 Web and Distributed Programming

Languages and technologies for programming and leveraging web-based computer services securely. Languages include PHP, Perl, JavaScript, Java, Ruby, CSS, and HTML5. Technologies include relational databases, web services, Hadoop, and cloud computing platforms. This course teaches students how to develop useful applications using a variety of distributed data and programming models.

3

Prerequisites

CPSC 20000

CPSC-25000 File Systems and Digital Forensics

A study of concepts related to the storage, retrieval, backup, and recovery of data in file systems. Topics include the organization and processing of sequential access files, direct access files, and indexed sequential access files; RAID and disk spanning; the organization of data on a variety of storage devices; the disk boot process; identifying hidden data on a disk's Host Protected Area; analyzing various kinds of partitions; analyzing FAT, NTFS, Ext2, Ext3, UFS1, and UFS2 file systems; recovering data from deleted files and hidden file locations; and using open-source forensics tools to identify drive contents.

3

Prerequisites

CPSC 20000

CPSC-28000 Packet Tracer

This is an introductory course to Cisco Packet Tracer,  a powerful network simulation, visualization, collaboration, and assessment tool that allows students to experiment with network designs and behavior. As an integral part of the Networking Academy learning experience, Packet Tracer provides simulation, visualization, authoring, assessment, and collaboration capabilities and facilitates the teaching and learning of complex technology concepts. Packet Tracer supplements physical networking equipment by allowing students to create virtual networks with an almost unlimited number of devices; encouraging practice, discovery, and troubleshooting.
1

Prerequisites

CPSC 20000

CPSC-28100 Introduction to Networks

This is the first course in the Cisco CCNA Routing and Switching curriculum teaching students the architecture, structure, functions and components of the Internet and other computer networks. Students will understand the TCP/IP layered architecture and protocols. By the end of this course, students will be able to build simple LANS, perform basic configurations for routers and switches, and implement IP addressing schemes. Students will also use network simulation software such as Cisco Packet Tracer to better understand the theoretical concepts of the course.
3

Prerequisites

CPSC 20000

CPSC-28200 Routing and Switching Essentials

This is the second course in the CCNA Routing and Switching curriculum teaching students how to configure a router and a switch for basic functionality. By the end of this course, students will be able to configure and troubleshoot routers and switches and resolve common issues with RIPv1, RIPng, single-area and multi-area OSPF, virtual LANs, and inter-VLAN routing.
3

Prerequisites

CPSC 28100

CPSC-28300 Scaling Networks

This is the third course in the CCNA Routing and Switching curriculum, teaching students how to configure routers and switches for advanced functionality. By the end of this course, students will be able to configure and troubleshoot routers and switches, and resolve common issues with OSPF, EIGRP, and STP.
3

Prerequisites

CPSC 28200

CPSC-28400 Connecting Networks

This is the fourth and final course in the CCNA Routing and Switching curriculum covering the WAN technologies and networks services employed by converged applications in a complex network. Students will understand and describe the operations of virtual private network (VPN). By the end of this course, students will be able to implement VPN, configure and troubleshoot network devices and resolve common issues with data link protocols.
3

Prerequisites

CPSC 28300

CPSC-296XX Topics in Computer Science

This course focuses on a specific topic in computer science that typically falls outside the established curriculum. This course enables the student to encounter content that engages an emerging question or subject in computer science. Topics will vary in accordance with areas of intense current interest.

1-3

Prerequisites

See Semester Course Schedule for prerequisites, if any.

CPSC-30000 Computer Organization

This study of computer organization covers the central processor unit, memory unit and I/0 unit, number systems, character codes and I/O programming. Programming assignments provide practice working with assembly language techniques, including looping, addressing modes, arrays, subroutines, and macros. Microsoft assembler is discussed and used for programming throughout the course.
3

Prerequisites

CPSC 21000

CPSC-31500 Scientific Computing

An introduction to developing computer applications for collecting, analyzing, and visualizing scientific and mathematical data. Students will learn how to use mathematical computing environments like Matlab, Octave, and R as well as to write journal-style papers in LaTeX.

3

Prerequisites

MATH 20000, MATH 21100, or MATH 24000

CPSC-33000 Database Systems

File storage structures, relational database management systems, entity relationship diagrams, relational algebra, relational calculus, SQL, database security, concurrency control, distributed and cloud storage solutions, coding database-supported web sites using PHP and XML.

3

Prerequisites

CPSC 20000

CPSC-34000 Algorithms and Data Structures

This course is the study of the design and analysis of computer algorithms including the data structures used in these algorithms. Topics include design techniques, such as divide-and-conquer, dynamic programming, the greedy method and backtracking, sorting, searching, graph computations, pattern matching and NP-complete problems.
3

Prerequisites

CPSC 21000

CPSC-35000 Operating Systems

A survey of concepts, facilities, and characteristics of contemporary computer operating systems that includes topics such as memory management, concurrent process control, multi-threading, security, virtualization, and parallelization.

3

Prerequisites

CPSC 21000

CPSC-35500 Cloud Computing and Virtualization

An introduction to the concepts and techniques of implementing cloud computing through the use of virtualization and distributed data processing and storage. Topics include operating system virtualization, distributed network storage, distributed computing, cloud models (IAAS, PAAS, and SAAS), and cloud security.
3

Prerequisites

CPSC 35000

CPSC-36000 Applied Programming Languages

This course exposes students to a variety of current programming languages that are not the focus of other courses in the major. The goal of the course is to increase students' programming skills while helping them develop good programming methodology and style. This course also gives students experience using code management systems and working on open-source programming projects.

3

Prerequisites

CPSC 24500

CPSC-396XX Topics in Computer Science

This series of 300-level seminars focuses on various topics related to computer science and is usually offered on weekends.

1-3

Prerequisites

See Semester Course Schedule

CPSC-41000 Video Game Programming 1

Video game design is an inherently interdisciplinary and technically challenging activity that requires proficiency in a broad range of topics and skills in the computer science curriculum. Video game developers must be excellent programmers, have a firm grasp of how to render and animate shapes and scenes, understand mathematical modeling of physical systems, be able to design and implement artificial intelligence systems, understand enough about hardware to optimize code for a variety of platforms, be able to plan and document complicated team projects, and appreciate the human factors issues involved in game design. And, of course, game developers must be creative and have an eye and ear for what makes for impactful game content. This course will cover each of these issues in an applied manner as the class builds basic but professional-looking video games from scratch. Students will work both individually and in teams and will be expected to document their work.

3

Prerequisites

CPSC 24500

CPSC-41500 Video Game Programming 2

This course will expand on CPSC 41000.  Students will learn how to write 2D games for a variety of platforms and 3D games for PCs and popular consoles.  They will use APIs and modeling tools for developing games in 3D and games for portable and other non-PC platforms.  In addition, they will simulate physical systems and intelligent thought processes using vector math, mechanics and artificial intelligence.  Work will be done in teams.

3

Prerequisites

CPSC 41000

CPSC-41700 Mobile Application Development

Programming for mobile devices requires knowledge of in a wide range of computer science topics including human-computer interaction, memory management, processing power, and communications technologies. This course explores video game development focusing on issues specific to mobile devices.  Topics that will be addressed include user interfacing, hardware devices, telephony, GPS systems, notifications, and application frameworks for mobile devices. Students will develop using both simulators and actual mobile devices. Work will be done individually and in teams.

3

Prerequisites

CPSC 24500

CPSC-42000 Computer Security

Fundamentals of computer and network security and information assurance. Topics include access control, authentication, trusted computing, software security and vulnerabilities, operating system security models, how various kinds of malware function, network security devices and architecture, computer hacking techniques and countermeasures, intrusion detection, cryptography, wireless security, and network security protocols.

3

Prerequisites

CPSC 20000

CPSC-42100 Computer Security 2

This second course in computer security explores techniques for performing encryption and authentication of data, operating system and application security, malware operation and analysis, code-level exploits, reverse engineering, security design principles, techniques for reducing complexity, and formal security models.
3

Prerequisites

CPSC 42000

CPSC-42300 Cyber Security and Forensics Tools

An introduction to some of the most popular and useful tools cyber security professionals use to ensure the security of computers, networks, and mobile devices. Examples from several different categories of security applications are discussed and practiced: password crackers, traffic sniffers, vulnerability scanners, web scanners, wireless security scanners, exploitation, packet crafters, fuzzers, and computer and mobile forensics. Students will learn how to use these tools and, just as importantly, how they work from a Computer Science perspective, so that they can improve them and code their own.
3

Prerequisites

CPSC 20000

CPSC-42500 Encryption

This is a one-semester course focusing on cryptography and network security.  Three areas of emphasis include: symmetric key encryption, public key encryption, and network security practices.  The mathematical concepts underlying encryption algorithms will also be presented.

3

Prerequisites

CPSC 20000

CPSC-42700 Programming for Penetration Testing

The best way to defeat a hacker is to code like one. That means being able to build, extend, and manipulate scripts and applications that compromise systems. This course presents a number of techniques for exploiting vulnerabilities in a variety of computer systems. Students will build port scanners, construct botnets, write exploits, create their own forensic analysis and network traffic analysis tools, develop web reconnaissance applications, implement scripts for examining and exploiting a wireless network, and craft malware that evade antivirus tools.
3

Prerequisites

CPSC 21000

CPSC-42800 Programming for Digital Forensics

While many tools exist for examining digital systems, the frenetic pace at which the cyber threat evolves means that hackers are constantly discovering new ways to hide their tracks. Digital forensics specialists who lack a programmer's understanding of how data are stored and hidden and how tools are written to examine these systems will forever be limited to using the tools others create. This course prepares digital forensics experts who can write their own digital forensics tools.
3

Prerequisites

CPSC 21000

CPSC-43000 Computer Graphics

This course provides an overview of display devices and applications, point-plotting techniques, two-dimensional transformations, clipping and windowing, lighting, and three-dimensional techniques. Students are also introduced to interactive computer graphics, animation and graphics applications. Students explore these concepts using C++ and the OpenGL programming interface.

3

Prerequisites

CPSC 21000

CPSC-44000 Software Engineering

Methods, strategies, and tools for implementing software systems, particularly as part of a development team. Topics include the software development life cycle, Unified Modeling Language, software testing techniques, software security, open-source development, requirements gathering and documentation, maintenance, and basic software project management.

3

Prerequisites

CPSC 24500

CPSC-46000 Programming Languages

This course provides a study of the structures of selected programming languages related to ALGOL 60 and LISP. Emphasis is placed on semantics rather than syntax of the programming languages. Backus-Naur Form, recursion, parameter transmitting techniques, and an introduction to formal language theory is covered. Functional programming is also discussed. A term project is required.

3

Prerequisites

CPSC 24500

CPSC-47000 Artificial Intelligence

Introduction to the field of artificial intelligence. This course covers the study of intelligent agent design and rational decision making. Topics include: goal-driven agents, search techniques, optimization, constraint satisfaction problems, logic, knowledge-based agents, probability and utility theory, Bayesian networks, and the basics of machine learning.
3

Prerequisites

CPSC 21000 and MATH 31000

CPSC-47100 Machine Learning

This course studies programs that use experience for improving their performance at solving a variety of tasks such as classification, regression, or clustering. Topics include supervised and unsupervised learning, reinforcement learning, parametric and non-parametric methods, ensemble learning and introduction to computational learning theory. Students will learn how to evaluate the performance of machine learning methods and how to utilize the techniques in various applications.
3

Prerequisites

CPSC 21000 and MATH 31000

CPSC-47200 Introduction to Data Mining

An introduction to the concepts, techniques, and systems of data warehousing and data mining, including (1) design and implementation of data warehouse and on-line analytical processing (OLAP) systems, and (2) data mining concepts, methods, systems, implementations, and applications.
3

Prerequisites

CPSC 33000

CPSC-48000 Communications and Networking

This course covers various topics, with areas of concentration on communications devices, protocols, standards, networking topologies, hardware, software, design, installation and setup, maintenance and security. The advantages, disadvantages and implementation issues of Microsoft Windows and Unix are explored.

3

Prerequisites

CPSC 21000

CPSC-48500 Advanced Communications and Networking

This course is a continuation of Communications and Networking. It concentrates on implementing and administrating a diverse network of computers and other devices, including routers, switches, firewalls, network storage devices, printers, wireless devices, and a variety of services. This hands-on courses also gives students experience hacking and protecting such devices.

3

Prerequisites

CPSC 28100 or CPSC 48000

CPSC-49000 Compiler Construction

Students a analyze formal language theory and finite state automaton, finite automaton-based lexical analysis, Wirth-Weber relations and simple precedence grammar, recursive descent parsing, symbol table organization, semantic routine and semantic models, and code generation techniques.

3

Prerequisites

CPSC 46000

CPSC-49200 Software Systems Capstone Project

In this course students will participate, as part of a team, in the design, implementation and testing of a medium-to-large software project. Additionally, this course will cover topics in professional ethics, intellectual properties, privacy, and professional communication.

3

Prerequisites

CPSC 44000

CPSC-49300 Computer Infrastructure Capstone Project

In this course students will participate, as part of a team, in the design, implementation and testing of a medium-to-large networked computer system. Additionally, this course will cover topics in professional ethics, intellectual properties, privacy and professional communication.

3

Prerequisites

CPSC 28100, CPSC 42000, or CPSC 48000

CPSC-496XX Topics in Computer Science

This series of 400-level seminars focuses on various topics related to computer science;  these seminars are usually offered on weekends.

1-3

Prerequisites

See Semester Course Schedule. Consent of instructor and/or chairperson may be required.

CPSC-49800 Computer Science Internship

Students acquire practical related experience through placement in selected settings. Students submit an internship proposal in advance for approval, maintain a daily task log and submit a five-page written summary report at the conclusion of the internship. A minimum of 210 clock hours and an interview with the on-site supervisor are required.

1 - 3

Prerequisites

Junior or Senior status in the Computer Science major, GPA of 3.00 or higher, and approval of the department chairperson.

CPSC-49900 Independent Study in Computer Science

This course is designed to meet the needs of Computer Science majors wishing to study an advanced topic not found in the curriculum.

1-3

Prerequisites

Consent of the department chairperson. To qualify for an Independent Study, a student must have successfully completed 60 credit hours, at least 12 of which were earned at Lewis, and have earned at Lewis University a minimum 3.0 cumulative GPA.