Computer Science (CS)

CS 1170  Computing Technology in Criminal Justice  (3 Credits)  

Explores problem-solving with computers from a criminal justice perspective. Students learn fundamentals of how computers store and process information, as well as basic concepts behind communication networks. Emphasizes the ethical use of computers. Students develop awareness of how their privacy may be compromised through computer use. Students explore how computers are used to perpetrate crime, and used by criminal justice organizations to prevent crime. Students are introduced to computer forensics and other techniques to investigate potential criminal acts. A variety of criminal justice databases are discussed and students learn how to create databases and find and analyze criminal justice data. Falls and Springs. (TECO)

CS 2010  Computing Fundamentals  (3 Credits)  

To explore some topical applications and technologies such as robotics, artificial intelligence and networking, first examines some of the fundamental aspects of computing including: how a computing machine stores, manipulates and transforms numbers, words, images and sounds, changing them from mere data into useful information; strategies for solving computational problems (algorithmic thinking); expressing computational solutions in various computer languages from assembly through icon-driven graphical languages (4GLs); historical, social and theoretical issues. Includes a weekly hands-on lab through which students experience a variety of computing environments. Two hours of lecture and 2 hours of lab each week. Falls and Springs. (TECO)

Prerequisite(s): regular admission to Plymouth State University.

CS 2080  Visual Basic  (3 Credits)  

A presentation of the Visual Basic Application Development Environment. Visual Basic allows students to concentrate upon the overall screen and function design, leaving procedural details to the computer. Two lecture hours and 2 hours of computer lab. Spring of even years.

Prerequisite(s): CS 2370.

CS 2220  Computer Hardware  (3 Credits)  

Focuses on the organization and structure of the major hardware components of computing systems. Expands upon the digital logic and notions of internal data representation begun in CS 2010, and then develops more depth in topics such as CPU structures and control, memory systems, I/O systems and the mechanics of information transfer. The nature of computing and the role of operating systems are examined from the hardware context. Two hours of lecture and 2 hours of lab each week. Falls and Springs.

Prerequisite(s): CS 2370.

CS 2370  Introduction to Programming  (4 Credits)  

A first course in computer programming, covering variables, functions, conditionals, recursion, loops, and arrays. Emphasis is placed on documentation and algorithm planning. Object-oriented programming is introduced, including methods, classes, inheritance, and polymorphism. Three lecture hours and 2 hours of computer lab. Falls and Springs.

Prerequisite(s): CS 2010.

CS 2381  Data Structures and Intermediate Programming  (4 Credits)  

A second programming course which reinforces the programming constructs learned in CS 2370 and covers more advanced programming techniques. Students learn about the client/server paradigm, how to create graphical user interfaces and event-driven program structure, and how to use basic data structures such as stacks, queues, lists, and trees. Students write applications using basic networking and multithreading techniques. Three lecture hours and 2 hours of computer lab. Falls and Springs.

Prerequisite(s): CS 2370.

CS 2400  Scientific Programming  (3 Credits)  

Analysis of scientific and mathematical problems using a high level programming language. Intended for students of science or mathematics. Springs.

Prerequisite(s): MA 2140 or MA 2550 or MA 2560.

CS 2470  Systems Programming in C/C++  (2 Credits)  

Gives students who are already proficient programmers experience in systems-level programming in C/C++. In particular, students learn how to create C/C++ programs that interact with the hardware and other software on a machine. Springs.

Prerequisite(s): CS 2370.

CS 2521  Introduction to Electromechanical Technology  (3 Credits)  

Introduction to basic concepts of electrical circuits, electronics, and mechanical technology, broad vision, basic structure, and applications of robots as systems with sensing, decision-making, and actuation. The laboratories identify the basic components, processors, sensors, and actuators, and connect them together into a simple but functioning system with various communication ports. Two hours of lecture and 2 hours of lab. Falls.

Prerequisite(s): CS 2010.

CS 2525  Microcontroller and Distributed Systems  (4 Credits)  

Gives students an application-focused experience with microcontrollers, focusing on communication and control. Introduces concepts in analog data I/O and advanced programming methods. Laboratory exercises help students learn the practical aspects of installing, programming, troubleshooting, and networking microcontrollers in typical use. Two hours of lectures and 2 hours of lab. Springs, beginning 2019.

Prerequisite(s): CS 2521.

CS 2990  Algorithm Development Under Time Constraints  (1 Credit)  

Prepares students to develop and code algorithms under severe time constraints to prepare for the ACM Programming Contest. Falls.

Prerequisite(s): permission of the instructor.

CS 3015  Mobile Application Development  (3 Credits)  

Provides an introduction to the design and implementation of applications for smart mobile phones and devices. Presents basics of mobile GUI programming components and application structure. Additional topics include use of patterns, pattern languages, and frameworks to alleviate the complexity of developing concurrent and networked services on mobile devices that connect to popular cloud computer platforms. Springs.

Prerequisite(s): CS 2381.

CS 3020  Web Programming  (3 Credits)  

Focuses on issues concerning the design, implementation and impact of user-friendly, interactive web pages and easy-to-navigate secure web sites. Covers a variety of web page and web site development technologies. Two lectures and 1 lab per week. Falls.

Prerequisite(s): CS 2370.

CS 3030  Advanced Web Programming  (3 Credits)  

Builds off technologies introduced in CS 3020, goes into greater detail, and focuses on how to build large-scale web applications. Students leverage frameworks to build sites that work across browsers and platforms. Students learn fundamental JavaScript concepts and use PHP test-driven development, regular expressions, and security techniques as best practices for engineering high performance web solutions. Springs.

Prerequisite(s): CS 3020.

CS 3221  Algorithm Analysis  (4 Credits)  

Formal study of algorithms, including those for searching, sorting, and graph structure based ones. Addresses several algorithm design issues such as divide-and-conquer, greedy and dynamic programming. Defines, evaluates and analyzes the correctness, time, and space complexity of algorithms. Covers probabilistic, concurrent programming, and other topics such as P, NP, NP-Completeness and approximation algorithms. Springs.

Prerequisite(s): CS 2381 and (MA 2250 or MA 3200).

CS 3240  Data Communication and Computer Networks  (3 Credits)  

Provides an introduction to the study of communications. Current methods and practices covered. Topics include data transmission, communication techniques, packet switching, routing, long-haul vs. local-area networks and performance considerations. Falls.

Prerequisite(s): CS 2370.

CS 3420  Introduction to Cybersecurity  (3 Credits)  

Provides foundation for understanding key issues of protecting digital information, identifying threats, and determining protection levels, response to security incidents, examination of pre- and post-incident procedures, and designing consistent, reasonable cyber security system, with appropriate intrusion detection and reporting features. Includes technical and managerial responses and an overview of cyber security planning and staffing functions. Falls.

Prerequisite(s): CS 2010; Junior status.

CS 3440  Multimedia  (3 Credits)  

Use and development of multimedia-combining text, graphics, sound, still and video images and animation into a unified, seamless document. Examines the nature of the various media, the capture or creation, digitization and modification of each media type, the architecture and technology of multimedia systems, the principles behind effective multimedia presentations, analysis and design of GUI systems and multimedia development through the use of common software packages. Treats both fundamental concepts and current and emerging technologies. Attention is given to both CDROM and network based media delivery. Lecture and lab are combined as needed. Spring of odd years.

Prerequisite(s): CS 2381.

CS 3500  Introduction to Artificial Intelligence  (3 Credits)  

An introduction to the basic theory and major applications of artificial intelligence. Covers general issues of AI such as its development, social impact and philosophical implication. Emphasizes the fundamental issues of AI such as problems and state spaces, search strategies, logic reasoning and various knowledge representation techniques. Discusses AI application domains, such as learning, expert systems, planning and game playing. An AI programming language (Lisp or Prolog) is used throughout the course. Students are expected to use the language to solve AI related problems. Fall of odd years.

Prerequisite(s): CS 3221.

CS 3600  Database Management Systems  (4 Credits)  

Covers the principles and practice of relational database design and analysis, including topics of entity-relationship modeling, functional dependencies, normalization, relational algebra and relational calculus, as well as their SQL correspondents. Other related issues are discussed such as other data base models, object-oriented database scheme, concurrent data access, recovery and security. One or more projects form a significant part of this course. Falls.

Prerequisite(s): CS 2370 and (MA 2250, MA 2200, or MA 3200).

CS 3650  Big Data Analytics  (3 Credits)  

Provides students with an understanding of Big Data analytics cluster computer framework. Students gain knowledge on managing Big Data from various data sources including public and private data sets including business. Students gain a hands-on experience on various cloud-based Big Data framework and NoSQL databases including Hadoop and Spark for real-time stream processing tools for IoT (Internet of Things) devices. Falls.

Prerequisite(s): CS 2370 and MA 2300.

CS 3690  Robotics I  (4 Credits)  

Introductory course focuses on the core system elements and their integration in Robotics, as well as Robot Operating System (ROS). Discusses algorithmic descriptions of key components, such as transistors, and core methods, including proportional control. In the laboratories, students use Python scripting and widely available sensor and motor drivers to build simple desktop devices. Falls.

Prerequisite(s): CS 2470, CS 2525, and MA 2250.

CS 3700  Computer Graphics  (3 Credits)  

Fundamental concepts of event-driven, interactive graphics using a modern API (such as OpenGL). Topics include: graphics systems, hardware and models, 2-D and 3-D rendering, events and interactions, geometric objects and their transformations, viewing and projections, basic concepts of color and shading, hierarchical and object-oriented modeling, discrete/raster operations; and an introduction to visualization. Significant programming projects connect theory to practice. Taught in C/C++. Spring of even years.

Prerequisite(s): CS 3221 and (MA 2200 or MA 3120).

CS 3720  Systems Analysis and Design  (3 Credits)  

The study of computerized information as a resource. The study of the systems development life cycle. Integrating computer technology, networks, systems analysis and design and organizational behavior in the building of large-scale applications or decision support systems. The use of CASE tools. The importance of service and testing of information systems. Springs.

Prerequisite(s): (CS 2381 or CS 3240), (CS 3600 or 3690), and Junior status.

CS 3780  Introduction to Computational Theory  (3 Credits)  

Intended to provide a solid theoretical foundation for computer science students. A series of artificial machines such as finite state automata, push-down automata and Turing machines are be defined and studied as formal models of computers. Studies their corresponding formal languages such as regular, context-free and unrestricted languages. Discusses related issues such as Church's Thesis, Halting problem and general incompatibility. Falls.

Prerequisite(s): CS 3221.

CS 3820  Human-Computer Interaction  (3 Credits)  

Concerned with the design, evaluation and implementation of interactive computing systems for human use. It briefly surveys the most important conceptual models of human psychology applied to computer interactions, and stresses the importance of good interfaces and interface design to human-computer interaction. It treats topics such as interface quality and methods of evaluation, user-centered design and task analysis, dialogue tools and techniques, windowing, prototyping and user interface implementation, I/O devices and the use of color and sound. It trains the Computer Science student to apply the theories of HCI to the task of design by surveying the techniques available in the discipline and demonstrating where and when they are applicable via a combination of scientific-theory understanding, engineering modeling and the solution of design problems facing the user interface designer. Springs.

Prerequisite(s): CS 2370.

CS 3890  Engineering Design  (3 Credits)  

Engineers apply principles of math and science to solve technical problems by following a standard engineering approach. Addresses some of the issues related to the electromechanical technology and robotics field. Besides coverage of basic laws of nature, physics, mathematics, ethical, management, and communication skills, focuses on the standard engineering design process, applied to projects. Springs, beginning 2020.

Prerequisite(s): CS 3690.

CS 4140  Software Engineering  (3 Credits)  

Presents fundamental principles of software engineering. Emphasizes software design, implementation and maintenance. Techniques used in the major phases of the software life cycle such as rapid prototyping, object-oriented design and module testing, are discussed. Software teams complete a term project that includes system documentation, design and implementation. Falls.

Prerequisite(s): CS 2381 and CS 3720.

CS 4230  System Administration  (4 Credits)  

Introduces students to system administration using Linux and Windows. Each student participates in installing and configuring both operating systems. Topics include the Active Directory, web services, file and print services, the file system, user management, task management, automation, backups, host services, firewalls, network management, performance analysis, security, policy and ethics. Students also learn to use a scripting language, various system tools, and commands.Falls.

Prerequisite(s): CS 3720.

CS 4250  Computer Architecture  (3 Credits)  

Fundamental concepts of computer design using a quantitative, performance-oriented approach. Topics include: measurement of performance instruction sets design; hardwired and micro-coded processor design; pipelining; memory hierarchy; I/O. Assembly language programming is studied through a series of short projects. Falls.

Prerequisite(s): CS 2220 and CS 2381.

CS 4310  Operating Systems  (3 Credits)  

Covers the major concept areas of operating systems for both large and small computers and the interrelationship between the operating system and computer architecture. Topics include: history, tasking, process synchronization, scheduling, memory organization, device management, file systems, security issues, distributed and real-time systems. One or more projects form a significant part of this course. Springs.

Prerequisite(s): CS 2381 and CS 4250.

CS 4400  Computer Networks and Protocols  (4 Credits)  

Focus is on providing a data stream for higher-level services to operate over. It is primarily concerned with the transport layer and below. TCP/IP is the predominant protocol studied. Others, such as Novell NetWare, are covered to provide comparative examples. Monitoring, diagnosis and administration of the infrastructure are studied. Lecture and laboratory. Springs.

Prerequisite(s): CS 2370 and CS 3240.

CS 4420  Computer Security  (3 Credits)  

Provides an introduction to the theory and practice of computer security and information warfare. In particular, examines issues in physical security, network security, database security, intrusion detection, detection of Trojan horses, viruses, worms and coordinated network attacks, access control, cryptography, legal and ethical issues including privacy and copyright, as well as various computer security policy issues. Springs.

Prerequisite(s): CS 2370, CS 3240, and CS 3600.

CS 4500  Topics in Computer Science and Technology  (3 Credits)  

Explores specialized topics pertaining to computer science and information technology that are not covered in other Computer Science and Technology courses. Topics vary by semester and instructor. May be repeated with a different topic for no more than 6 credits. Springs.

Prerequisite(s): variable, depending on topic selection; consult course instructor.

CS 4520  CyberEthics  (3 Credits)  

Surveys the ethical issues involved in the use of information technology. Provides an introduction to a variety of ethical theories that can be used as guides for thinking about these issues. Emphasizes the use of case studies to practice the application of ethical frameworks to real problems facing today's society. Serves as part of the senior capstone experience. Falls. Prerequisite(s): Junior status. (DICO)(INCO)(WRCO)

CS 4690  Robotics II  (4 Credits)  

In this intermediate course, students continue to use ROS, but will develop a component of the system themselves. Such a component may be a program to control an actuator, to analyze and integrate sensor signals, or to plan a path for the robot. The overall goal is to give students experience with creating their own piece of a larger system.

Prerequisite(s): CS 3690.

CS 4760  Senior Project  (3 Credits)  

Available only to senior Computer Science and Information Technology majors. Working under faculty direction, students select a problem or task, analyze it and develop a solution. The problem/task selected must involve some aspect of computing. At the end of the semester, each student makes a formal, public presentation in an appropriate format determined by the faculty. In addition, students meet weekly, as a group, to discuss a variety of topics related to investigation, research and development, the process of public presentation of results, and to present the other students with an overview and regular progress reports on their own project. By individual enrollment with the Chair's signature. With permission. Pass/No Pass. Falls and Springs.

Prerequisite(s): all required 2000 and 3000 level courses.

CS 4790  Robotics III  (4 Credits)  

Advanced topics in robotics for students, intended as a capstone project course for the Electromechnical Technology and Robotics program. Based on the knowledge and experience acquired in the previous courses, students follow a standard engineering approach to pursue an individual project that incorporates sensing, control, and actuation to solve a well-defined and realistic problem in a real situation. Springs, beginning 2019.

Prerequisite(s): CS 3890 and CS 4690.

CS 4910  Independent Study  (1-3 Credits)  

Intensive individual work in a particular area of Computer Science not otherwise available through the curriculum. Topics to be chosen by the student in consultation with the instructor. Consent required of the instructor who will supervise the independent study and the Department Chair.

CS 4920  Computer Science Internship  (1-6 Credits)  

Students leave the campus to work in a professional situation in the computing field with or without financial compensation. The employing agency provides a carefully-planned sequence of tasks intended to provide the student with a learning experience in the field of computing. Students have supervisors both in the Computer Science and Technology Department and in the employing agency who will jointly coordinate the student’s work. Students must submit to the Department a written proposal prior to undertaking the internship and a final report upon its completion. Repeatable for a maximum of 6 credits.

Prerequisite(s): final approval of the internship will come from the Department Chair; Computer Science or Information Technology major and completion of major courses appropriate to the position (to be determined by the supervising faculty member).