CPSC - Computer Science
This series of 10000-level seminars focuses on various topics related to computer science and is usually offered on weekends.
1-3
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
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, CPEN 10000, or DATA 20000
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
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
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
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 21000
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
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
In this course, students will be introduced to current and emerging internetworking technologies. Topics include Open Systems Interconnect (OSI) reference model, binary numbers, hexadecimal numbers, address classes, Internet Protocol (IP) addressing and subnetting, protocols, standards, and cabling techniques.
3
Prerequisites
CPSC 20000
Students will be introduced to network architecture and operations of routers and switches in a networked environment. Students will learn to configure and analyze routers and switches. They will contrast and implement routing and switching operations and perform basic network configuration and troubleshooting, identify and mitigate LAN security threats, and configure and secure a basic WLAN.
3
Prerequisites
CPSC 28100
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
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
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.
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
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 20400, MATH 20600, or MATH 20900
This study of database management systems includes database models, database design, physical implementation and writing code to access data in a database. Topics covered in this course include file storage structure, relational database management systems, entity-relationship diagrams, SQL, database security, concurrency control, distributed and cloud storage solutions and coding database-supported websites.
3
Prerequisites
CPSC 20000 or DATA 20000
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
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
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
This course covers industry-standard software development tools and team practices used to build commercial software. Topics include development environments, debugging, source code control, shell scripting, release management, containers, automated test development, issue tracking, linting, tracking race conditions and deadlocks, reverse engineering, and profiling.
3
Prerequisites
CPSC 24500
Provides the knowledge and hands-on skills required to install, troubleshoot, and monitor security network devices. Students who complete this course will have a better understanding of what it takes to secure a network. This course requires a deep understanding of the theory for enterprise security and the hands-on experience needed for working with today’s networks.
3
Prerequisites
CPSC 28200
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
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
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
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. Cross-listed with CPSC 50600.
3
Prerequisites
CPSC 20000 and CPSC 22000
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. Cross-listed with CPSC 50700.
3
Prerequisites
CPSC 21000 and CPSC 42000
This course provides students with practical exposure to setup and operate a wireless network. Common threats to wireless networks will be explained, network attackers will be demonstrated and steps to control attacks will be discussed. Students will be able to detect and prevent wireless attacks by gaining an understanding of various security technologies and common attacks and vulnerabilities.
3
Prerequisites
INSY 33500 or CPSC 42000
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 when and how to use these tools legally for the purpose of finding and fixing vulnerabilities.
3
Prerequisites
CPSC 20000
This course will present key cryptologic terms, concepts, and principles. Traditional cryptographic and cryptanalytic techniques are covered plus perspective on successes and failures in cryptologic history, including both single-key algorithms and double-key algorithms. Issues in network communications, network security, and security throughout the different layers of the OSI model for data communications will also be discussed in detail, as well as the use of cryptologic protocols to provide a variety of security services in a networked environment. Authentication, access control, non-repudiation, data integrity, and confidentiality issues will also be covered, plus key generation, control, distribution, and certification issues. Cross-listed with CPSC-52500.
3
Prerequisites
CPSC 20000 and MATH 21000
This course presents hands-on techniques for recovering evidence for mobile phones such as iPhones, and windows and android phones. Mobile devices such as iPads, Tablet PCs and iPods will also be covered in this course. Students will learn how to recover passwords, deleted voicemails, photos, and text messages and data from various apps on mobile devices.
3
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
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
This course involves the study of both 2D and 3D graphical programming techniques for applications in real-time simulations such as video games and virtual reality. Concepts covered include graphical transformations for scaling, rotation, and translation. Data structures for vector objects are discussed and implemented in code. In addition, students learn to apply compound geometric transformations to vector lists. The core concepts of transformations, window to viewport mapping, and projection are discussed and implemented in code.
3
Prerequisites
CPSC 21000
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
This course covers modern programming languages and development frameworks. Topics include JAMStack (React), service-oriented architectures, microsevices architecture, cloud-native architectures, containers, serverless functions, map-reduce, distributed authentication, internationalization, and functional programming.
3
Prerequisites
CPSC 24500 and CPSC 33000
This course will introduce students to malware analysis and malware reverse engineering. It provides an overview of the various types of malware, how they are used, and the role malware analysis and reverse engineering plays in information security. Students will reverse engineer and analyze malicious code to gain a better understanding of how it works and more importantly, how to defend against it. This course is geared towards computer science and cybersecurity students with some knowledge of computer programming. Prior cyber security or malware analysis experience is not required.
3
Prerequisites
CPSC 34000 and CPSC 35000
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
This course examines undecidability, computational complexity, and models of computations. Topics include languages and automata, Turing machines, reductions, time and space complexity classes, and completeness.
3
Prerequisites
CPSC 34000
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 21000
This course reviews computer networking protocols, including TCP/IP, and then builds upon that to describe how modern networks use such protocols to implement client-server systems. The course discusses servers, the services they provide, and the clients that request and utilize those services. Students learn to identify the range of services provided by modern networks, the fundamentals of configuring those services, and how to implement a variety of clients that access those services.
3
Prerequisites
CPSC 21000
In this course, students will explore in depth network architecture and infrastructure and considerations related to designing, securing operating and troubleshooting enterprise networks. Topics include wide area network (WAN) technologies and quality of service (QoS) mechanisms used for secure remote access along with the introduction of software-defined networking, virtualization, and automation concepts that support the digitalization of networks.
3
Prerequisites
CPSC 28100
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
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
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
This course serves as the capstone experience for students enrolled in a CS+X program. Students will pursue a research or development project using the tools and concepts of computer Science to solve or explore problems in the student's other field of interest. Depending on the scope of the project, it may involve working as a team. Each section of the course will relate to a particular CS+X program and will be team-taught by one faculty member in Computer Science and one faculty member from the partnering discipline. The student will pursue a project with the guidance of both faculty members. The student will present their work as a scholarly paper and as a presentation to faculty and peers.
3
This series of 40000-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.
This course allows senior computer science students to engage in a scholarly research project in the field of computer science. Under the close guidance of their faculty advisor, students will select a research problem in a particular computer science area. They will survey the current literature in the chosen area and formulate a specific research question. Students will then attempt to address the research question using techniques from Computer Science, document their work, and present the results and conclusions. Students will write a well-researched final paper and give a presentation of their project and findings.
3
Prerequisites
CPSC 34000
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.
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.