Computer Science (CS)

CS 2010  Computing Fundamentals  (3)  

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 2220  Computer Hardware  (3)  

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)  

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. Springs and Falls.

Prerequisite(s): CS 2010 or MT 3720

CS 2381  Data Structures and Intermediate Programming  (4)  

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)  

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)  

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)  

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): MA 1800 or Math Placement score of 2 or higher.

CS 2525  Microcontroller and Distributed Systems  (4)  

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.

Prerequisite(s): CS 2370 and CS 2521.

CS 2900  Introduction to Electronic Circuitry  (4)  

A fundamental study of the functional and operational characteristics of electric and electronic systems. Students will learn to analyze and understand both DC and AC electrical circuits with a particular focus on DC electronics. Students will learn to design, build, troubleshoot and integrate circuit boards into existing and new systems. Falls.

Prerequisite(s): C in MA 2130 or B- in MA 1800 or B- in MA 2450 or B- in MA 2250.

CS 2901  Introduction to Materials, Design and Fabrication Technology  (4)  

An introduction to “building things” covering selection of materials based on their properties and suitability for different applications. Students will learn to draft and design a wide variety of three dimensional objects using computer aided drafting and to turn their designs into reality using a broad collection of fabrication tools and machinery. Falls.

CS 2905  Introduction to Microcontrollers  (4)  

An experience based introduction to a variety of microcontrollers. Students will select appropriate controllers for real world problems and program them to perform given tasks. In laboratory experiences, students practice building physical components and learn troubleshooting techniques. Students complete an individual project, integrating a microcontroller with electronic hardware of their own design. Open to all majors. Springs.

Prerequisite(s): (CS 2521 OR CS 2900) AND CS 2370.

Corequisite(s): CS 2470.

CS 2990  Algorithm Development Under Time Constraints  (1)  

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)  

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)  

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)  

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)  

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 3200 Or MA 2450 Or MA 2250).

CS 3240  Data Communication and Computer Networks  (3)  

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)  

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 3500  Introduction to Artificial Intelligence  (3)  

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)  

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 2220 or MA 2210 or MA 2250 or MA 2450 or MA 2700).

CS 3650  Big Data Administration and Analysis  (3)  

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.

CS 3690  Robotics I  (4)  

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 3720  Systems Analysis and Design  (3)  

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)  

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)  

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)  

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.

Prerequisite(s): (MA 2250 OR MA 2450) AND MA 2300 AND (CS 2905 OR CS 2525) AND (CS 2900 OR CS 2521) AND CS 2470 AND CS 2370

CS 3901  Industrial Robotics  (4)  

An in-depth exploration of robotic systems used in industrial settings. Students work with real world examples, hear from industry guest speakers and learn about robots’ effects on corporate organizations. Integrated lecture and labs prepare students for a project in which they design, build and program a robot in partnership with local industry Open to EMTR majors. Falls Even.

Prerequisite(s): (MA 2450 OR MA 2250) AND MA 2300 AND (CS 2905 OR CS 2525) AND (CS 2900 OR CS 2521) AND CS 2901 AND CS 2470 AND CS 2370.

CS 3902  Robots in Science and Scientific Inquiry  (4)  

A survey of robots in scientific pursuit. Students learn about robots enabling scientists to make new discoveries with examples from current studies. Cooperating with domain scientists, students design a small scientific study involving a robot of their own design. Participants will be mentored throughout peer review and publication or presentation at conferences. Open to EMTR majors. Springs Even.

Prerequisite(s): (MA 2450 OR MA 2250) AND MA 2300 AND (CS 2905 OR CS 2525) AND (CS 2900 OR CS 2521) AND CS 2901 AND CS 2470 AND CS 2370.

CS 3905  Robotics in Aviation and Spaceflight  (4)  

An introduction to unmanned aerial systems (UAS) including a survey of the underlying general principles of flight. Concepts are then transferred to the particular demands of spaceflight. Students will assemble and program a small scale unmanned aerial vehicle (UAV) to be flown at the Plymouth airport (1P1). Falls Odd.

Prerequisite(s): (MA 2450 OR MA 2250) AND MA 2300 AND (CS 2905 OR CS 2525) AND (CS 2900 OR CS 2521) AND CS 2901 AND CS 2470 AND CS 2370.

CS 3970  Current Events, Topics and Issues in Robotics  (4)  

The fields of computer science, robotics and related disciplines evolve very rapidly. This course examines current issues and developments that are disrupting the status quo and have the potential to shape the future of the field and of society at large. Topics vary by semester. Repeatable twice for a maximum of 8 credits. Falls Even.

Prerequisite(s): CS 2370 AND (MA 2450 or MA 2250 OR MA 2490).

CS 4140  Software Engineering  (3)  

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)  

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)  

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)  

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)  

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)  

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 3240 and CS 3420.

CS 4500  Topics in Computer Science and Technology  (3)  

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)  

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. (DICO) (INCO) (INCP) (WRCO)

Prerequisite(s): Junior status.

CS 4690  Robotics II  (4)  

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)  

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 Capstone  (4)  

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. Instructor permission required.

Prerequisite(s): CS 3890 and instructor permission.

CS 4910  Independent Study  (1-3)  

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)  

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).