### COMPUTER SCIENCE CORE COURSES

*Take the following courses:*

*
*

**CS-110 ** Computer Science I

An introductory study of computer science software development concepts. Python is used to introduce a disciplined approach to problem solving methods, algorithm development, software design, coding, debugging, testing, and documentation in the object oriented paradigm. This is the first course in the study of computer science.

3 CreditsN,CTGES,CTGIS**Recommended programming experience or IT110 or IT100, IT111 or IM110 or MA103 but
not necessary. **

**CS-220 ** Computer Organization

An introduction to digital computer systems including a treatment of logic and digital circuits, data representation, device characteristics and register transfer notation covered in a manner that stresses application of basic problem solving techniques to both hardware and software design. Students gain experience programming in an assembly language to reinforce these systems and design concepts.

4 CreditsN**Prerequisites: CS110.**

*
*

**CS-240 ** Computer Science II

A continued study of computer science foundations as begun In Computer Science I. An object-oriented language such as JAVA is used to develop and implement large programs involving various data structures and data abstraction as exemplified by packages and modules. Search, sorting, advanced data structures, programming methodology and analysis are emphasized.

4 CreditsN**Prerequisites: CS110 and MA116 or MA210. **

**
CS-255C
** C++ Programming

The students will prepare a portfolio of computer programs written in the language. The programs are reviewed, critiqued, and then the student has an opportunity to revise them as needed for final inclusion in the portfolio.

2 CreditsN**Prerequisites: CS110 and Sophomore standing and permission. **

*
*

**CS-255U ** Unix Programming

The students will prepare a portfolio of basic Unix programs and scripts. The course covers basic Unix commands, editing techniques, regular expression usage, and script building. The programs are reviewed, critiqued, and the student has an opportunity to revise them as needed for final inclusion in the portfolio.

1 CreditsN,CTGES**Prerequisites: CS110. **

*
*

**CS-300 ** Software Engineering

An introduction to the issues of software design. Topics include software engineering, software project management and development of projects in a modern design environment. The focus of the course is on the process used to develop quality software. The students work in teams to develop, implement and fully document a computer project to apply these concepts.

3 CreditsN**Prerequisite: CS240. **

**CS-315 ** Algorithms and Analysis

The study and analysis of algorithms, their complexity and supporting data structures. Topics include searching, sorting, mathematical algorithms, tree and graph algorithms, the classes of P and NP, NP-complete and intractable problems, and parallel algorithms.

4 CreditsCW,N**Prerequisites: CS240 and MA116. **

**CS-305 ** Software Models

A study of current software implementation models. Models of procedural based control for both batch and interactive settings, event driven control, real time control and exception handling are considered within representative interactive development environments such as .NET Design of graphical user interfaces for web-based and windows-based applications are integrated into the team projects.

3 CreditsN**Prerequisites: IT240 or CS240. **

**CS-320 ** Operating Systems

An introduction to the theory, evaluation, and implementation of computer operating systems. Topics include memory, process and resource management, elementary Queuing and network models, and scheduling.

4 CreditsN**Prerequisites: CS220 & CS240. **

**CS-362 ** Languages and Translation

A systematic approach to the study and analysis of computer programming languages. The procedural, functional, object- oriented and logical language paradigms are examined through the use ofrepresentative languages. Syntax and semantics issues are emphasized through the study of translation techniques in formal labs and group projects.

4 CreditsN**Prerequisites: CS220 and CS240. Must have Junior or Senior standing. **

**CS-370 ** Database Management Systems

Focuses on concepts and structures necessary to design and implement a database management system. Various modern data models, data security and integrity, and concurrency are discussed. An SQL database system is designed and implemented as a group project.

3 CreditsN,CTGIS**Prerequisites: CS110. **

**CS-480 ** Computer Science Seminar I

Discusses current advances in computer science and information technology not otherwise covered in our program such as, but not limited to, networking, artificial intelligence, societal issues. In addition this course allows senior students to plan an individual research project to be completed in CS485. This course, taken by a junior may be repeated as a senior as CS481.

1 CreditsN**Prerequisites: Junior or senior standing and CS220 or CS240 or IT210. **

**IT-210 ** Information Technology Systems

This course introduces students to three core areas in Information Technology: networks, database and web. The course progresses through two phases during its study of modern IT environments. Initial study includes all the necessary components of today's IT system environment and its use in business. Secondly, students use a server based database development environment to create an IT system.

4 CreditsN**Prerequisites: CS110. MA116 strongly recommended. **

**IT-307 ** Project Management

This course reviews and applies project management processes and techniques such as project life cycle, project selection methods, work breakdown instructions, network diagrams, cost estimates, and more.

3 CreditsS,CW,CS,SW-LE**Prerequisites: IT210 and Jr or Sr standing or permission of the instructor. Corequisite:
IT308. **

**IT-308 ** Innovations for Industry I

This lab will require a team of students to function as a project development team for an IT- related business. The students will be exposed to many aspects of systems analysis, design, development and implementation, as well as project management tools and techniques. Students will be required to learn in a just-in-time mode using on-demand educational resources.

1 CreditsS**Prerequisites: IT210 and Jr or Sr standing or by permission of the instructor. Corequisite:
IT307. Note: This course will have appointed class times for projects other than the
times listed on the schedule. **

**MA-116** Discrete Structures

Introduces mathematical structures and concepts such as functions, relations, logic, induction, counting, and graph theory. Their application to Computer Science is emphasized.

4 CreditsN, Q**Pre-requisite high school algebra.**

**MA-130** Calculus I

An introduction to calculus including differentiation and integration of elementary functions of a single variable, limits, tangents, rates of change, maxima and minima, area, volume, and other applications. Integrates the use of computer algebra systems, and graphical, algebraic and numerical thinking.

4 CreditsN, QM

*Take one of the following courses:*

**MA-205** Elementary Statistics

Introduction to traditional statistical concepts including descriptive statistics, binomial and normal probability models, confidence intervals, tests of hypotheses, linear correlation and regression, two-way contingency tables, and one-way analysis of variance.

4 CreditsN, QS, WK-SP**Prerequisite: FYC-101 or EN-110 or EN-109**

**MA-220** Introduction to Probability & Statistics

An introduction to the basic ideas and techniques of probability theory and to selected topics in statistics, such as sampling theory, confidence intervals, and linear regression.

4 CreditsN, QS, CTGES**Prerequisite: MA130**

### ELECTIVE COURSES

*Complete 6 credits from the following courses:*

**CS-255A ** Android Programming

This course will take your existing Java skills learned in Computer Science I and turn them into Android programming experience. Students will learn the skills in order to develop a fully functional application. Programming in the Android Studio environment, activity and fragment lifecycles, basic user interface design, and application distribution are emphasized.

1 CreditsN**Prerequisites: CS240 and Instructor Permission.**

**CS-255B ** COBOL Programming

The students will prepare a portfolio of computer programs written in the language. The programs are reviewed, critiqued, and then the student has an opportunity to revise them as needed for final inclusion in the portfolio.

2 CreditsN**Prerequisites: CS110 and Sophomore standing and permission. **

**
CS-255C
** C++ Programming

The students will prepare a portfolio of computer programs written in the language. The programs are reviewed, critiqued, and then the student has an opportunity to revise them as needed for final inclusion in the portfolio.

2 CreditsN**Prerequisites: CS110 and Sophomore standing and permission. **

**CS-255F ** FORTRAN Programming

The students will prepare a portfolio of computer programs written in the FORTRAN language, The programs are reviewed, critiqued, and the student has an opportunity to revise them as needed for final inclusion in the portfolio.

2 CreditsN**Prerequisites: CS110 and Sophomore standing and permission of instructor. **

**CS-255P ** Perl Programming

The students will prepare a portfolio of computer programs written in the Perl language. The programs are reviewed, critiqued, and then the student has an opportunity to revise them as needed for final inclusion in the portfolio.

2 CreditsN,CTGES**Prerequisites: CS110 and Sophomore standing and permission. **

**CS-255R ** Ruby Programming

The students will prepare a portfolio of computer programs written in the Ruby language. The programs are reviewed, critiqued, and then the student has an opportunity to revise them as needed for final inclusion in the portfolio.

2 CreditsN**Prerequisites: CS110 and Sophomore standing and permission. **

**CS-255U ** Unix Programming

The students will prepare a portfolio of basic Unix programs and scripts. The course covers basic Unix commands, editing techniques, regular expression usage, and script building. The programs are reviewed, critiqued, and the student has an opportunity to revise them as needed for final inclusion in the portfolio.

1 CreditsN,CTGES**Prerequisites: CS110. **

**
CS-255Y
** Python Programming

The students will prepare a portfolio of computer programs written in the Python language. The programs are reviewed, critiqued, and then the student has an opportunity to revise them as needed for final inclusion in the portfolio.

2 CreditsN,CTGES**Prerequisites: CS110 and Sophomore standing and permission. **

*
*

**CS-330 ** Computer Graphics

An introduction to both the hardware and software utilized in computer graphics. The emphasis is on a top-down, programming approach, using a standard application programmer's interface. Students will create three-dimensional and interactive applications, in addition to studying several of the classic, low-level, rendering algorithms.

3 CreditsN**Prerequisite: CS-240.**

**CS-341** Scientific Computing

This course begins with an introduction to fundamental concepts in Scientific Computing and concludes with domain-specific projects in areas like Bioinformatics, Data Science, Physical Systems, and Numerical Analysis. The common content will include command-line interfaces (Linux), programming languages (Jupyter/Python), numerical and graphical libraries (NumPy and Matplotlib), version-control (Git/Github), and relational databases (SQL).

3 CreditsN**Pre-Req: CS-110**

**CS-390 ** Computer Science in Germany Seminar

This course will introduce the student to studying Computer Science in Germany. During the spring semester at Juniata, students will prepare for their travel to Germany by: (1) studying the " functional " German required for travel, (2) reading about the culture and history of the country (and the state of North Rhine-Westfalia in particular), and (3) configuring the technology required for that years selected topic in CS or IT (the course content will vary each year, previous topics have included Graphical Programming, Security Engineering, and Compiler Construction). This course culminates with its co-requisite course, CS 391, which is given at the Muenster University of Applied Sciences, for between two and three weeks each May or June. The instructor at MUAS will be a Juniata College faculty member.

1 CreditsI**Pre-requisites will be CS240 and instructor permission. Co-requisite is CS391. Completion
of both CS390 and CS391 will fulfill the I designation. A fee of $1,200 is applied
and it cover instructional costs,tuition, and Juniata College credit. Students will
need to purchase their own plane and train fares. The host institution will facilitate
housing for the students. **

**CS-391** Computer Science in Germany

This course is given at the Muenster University of Applied Sciences, for between two and three weeks each May or June. The instructor at MUAS will be a Juniata College faculty member. Pre-requisites: CS-240 and instructor permission. A fee of $1,200 is applied that is split between the spring and summer terms and covers instructional costs, tuition, and Juniata College credit. Students will need to purchase their own plane and train fares. The host institution will facilitate housing for the students.

2 CreditsI,SW-GE

*
*

**CS-485 ** Computer Science Research

Allows students to carry out the independent computer science research project as designed in CS480 or CS481.

3-5 CreditsN,CW**Prerequisite: CS480 or CS481. **

**DS-110 ** Intro to Data Science

This course introduces the student to the emerging field of data science through the presentation of basic math and statistics principles, an introduction to the computer tools and software commonly used to perform the data analytics, and a general overview of the machine learning techniques commonly applied to datasets for knowledge discovery. The students will identify a dataset for a final project that will require them to perform preparation, cleaning, simple visualization and analysis of the data with such tools as Excel and R. Understanding the varied nature of data, their acquisition and preliminary analysis provides the requisite skills to succeed in further study and application of the data science field. Prerequisite: comfort with pre-calculus topics and use of computers.

3 CreditsN** **

**DS-210 ** Data Acquisition

Students will understand how to access various data types and sources, from flat file formats to databases to big storage data architecture. Students will perform transformations, cleaning, and merging of datasets in preparation for data mining and analysis.

3 CreditsN**PRE-REQ: CS 110 and DS 110. **

**DS-352 ** Machine Learning

This course considers the use of machine learning (ML) and data mining (DM) algorithms for the data scientist to discover information embedded in datasets from the simple tables through complex and big data sets. Topics include ML and DM techniques such as classification, clustering, predictive and statistical modeling using tools such as R, Matlab, Weka and others. Simple visualization and data exploration will be covered in support of the DM. Software techniques implemented the emerging storage and hardware structures are introduced for handling big data.

3 CreditsN**Prerequisite: CS-110, DS-110, and an approved statistics course from this list: MA-205,
MA-220, BI-305, PY-214, or EB- 211. **

**DS-375 ** Big Data

This course considers the management and processing of large data sets, structured, semi-structured, and unstructured. The course focuses on modern, big data platforms such as Hadoop and NoSQL frameworks. Students will gain experience using a variety of programming tools and paradigms for manipulating big data sets on local servers and cloud platforms.

3 CreditsN**Prerequisites: DS 110 Intro to Data Science and CS 370 Database Management Systems **

*
*

**IT-110 ** Principles of Information Technology

This course provides a context for further study in information technology. Topics include an overview of the fundamentals of information systems, current and emerging technologies, business applications, communications and decision making, and the impact of these systems on business, government, and society. This course will also emphasize the development of both writing and speaking skills through application of the concepts that define the course. Students who have passed IT-111 or IM-110 may not take this course.

3 CreditsS** **

**IT-260 ** Human Computer Interaction

To users of any system, the interface is what they see and think of as the computer. Interaction with a computer can be better defined in terms of interface, as any part of the computer system that the user comes in contact with, either physically, perceptually, or conceptually. Human interaction with computers can be studied, designed, evaluated, with the goal being to produce usable products from a human-centric perspective.

3 CreditsS**Prerequisites: CS110. **

*
*

**IT-325 ** Network Design & Management.

Focuses on the concept of the foundations of a network in both design and support. The OSI reference model will be examined along with techniques for supporting current technologies that align with each other. Emphasis will be placed on protocols, topologies and traffic analysis.

4 CreditsN**Prerequisites: CS240 or IT210. **

*
*

**IT-341 ** Web Design

A study of modern web design along with an examination of markup and scripting languages (e.g., HTML, JavaScript), page, image and multimedia formats, and the techniques in developing and managing a web site. Page design, graphical user interfaces, interactive techniques and the importance of e-commerce are also emphasized.

2 Credits **Prerequisites: CS110 or permission.**

*
*

**IT-342 ** Web Programming

A study of the modern web programming environment, including introduction to Web 2.0 and Web 3.0, HTML, XHTML, and JavaScript. The class will address client-side scripting as well as server-side technology, and accessing a database. These technologies will be combined to create an active, dynamic web page.

2 Credits **Prerequisite: CS-240. Corequisite: IT-341. **

**
IT-350
** Security Engineering

This course will focus on the area of computer security. Included will be information on attacks, prevention, as well as protection from non-malicious threats. It will look at network as well as web based security. A focus will be on creating secure computer environments from the ground up, not as an afterthought.

3 CreditsN**Prerequisites: IT210 and junior standing or permission of the instructor. **

**IT-351 ** Security Engineering Lab

This course is a laboratory course with hands-on activities to supplement the instruction given in the IT350, Security Engineering course. The lab activities will center on digital forensics, hacker exploits and protection techniques, penetration testing and vulnerability analysis.

1 Credits **Co-requisite IT350. **

**IT-380 ** Innovations for Industry II

See IT308. This course will have appointed class times for projects other than those listed on the schedule. A continuation of IT308.

4 CreditsS,CTGIS**Prerequisites: IT307 & IT308 and senior standing. **

**IT-480 ** Innovations for Industry III

See IT380. This course will have appointed class times for projects other than those listed on the schedule. A continuation of IT380.

4 CreditsS,CTGIS**Prerequisites: IT380 and senior standing. **

*
*

**IM-242 ** Info Visualization

This course considers the various aspects of presenting digital information for public consumption visually. Data formats from binary, text, various file types, to relational databases and web sites are covered to understand the framework of information retrieval for use in visualization tools. Visualization and graphical analyses of data are considered in the context of the human visual system for appropriate information presentation. Various open-source and commercial digital tools are considered for development of visualization projects.

3 CreditsN,CTDH,CTGES**Prerequisite: IT 110, IT 111, IM 110, DS 110, or CS 110 or permission. **

**MA-160** Linear Algebra

An introduction to systems of linear equations, matrices, determinants, vector spaces, linear transformations, eigenvalues, and applications.

3 CreditsN, QM**Prerequisites: MA130.**

*
*

**MA-210** Foundations of Mathematics

An introduction to the logical and set-theoretic basis of modern mathematics. Topics covered include propositional and predicate logic; induction; naive and axiomatic set theory, binary relations, mappings, infinite sets and cardinality; finite sets and combinatorics; and an introduction to the theory of computability. Students will learn to read and to express mathematical ideas in the set-theoretic idiom.

3 CreditsCW**Prerequisites: MA160 or MA116 or PL208 or MA208 or permission of the instructor.**

**MA-230** Calculus II

Expands the treatment of two-space using polar and parametric equations. Emphasizes multivariable calculus, including vectors in three dimensions, curves and surfaces in space, functions of several variables, partial differentiation, multiple integration, and applications.

4 CreditsN, QM**Prerequisite: MA130**

*
*

**MA-233** Integrals Series & Differential Equations

Integration, Taylor and Fourier series, and an introduction to differential equations, with applications and the use of the software package Maple. (Course meets four times per week and concludes at midterm.)

2 CreditsN**Note: A student may receive credit for MA233 or MA235, but not for both. Prerequisite:
MA130.**

**MA-235** Calculus III

A continuation of the calculus sequence. Topics include methods of integration by Simpson's Rule, applications, Taylor and Fourier series; introduction to ordinary differential equations; integration in polar, cylindrical, and spherical coordinates; differential and integral vector calculus.

4 CreditsN, QM**Prerequisites: MA230.**

**MA-341** Scientific Computing

This course begins with an introduction to fundamental concepts in Scientific Computing and concludes with domain-specific projects in areas like Bioinformatics, Data Science, Physical Systems, and Numerical Analysis. The common content will include command-line interfaces (Linux), programming languages (Jupyter/Python), numerical and graphical libraries (NumPy and Matplotlib), version-control (Git/Github), and relational databases (SQL).

3 CreditsN**Pre-Req: CS-110**

**PC-209** Electronics

An introduction to the theory and application of analog and digital electronics, starting with basic AC and DC circuits. The unit explains the principles of operation of the power supply, amplifier, oscillator, logic circuits, micro controllers, and other basic circuits. An associated laboratory component allows construction of and measurements on the circuits under consideration. Note: a special fee is assessed.

3 CreditsN** **

#### Learn the Skills You Need ...

Algorithm design and data management skills

Problem analysis and a systematic approach to problem solving

The operation and organization of computer hardware and software

Essential tools for the analysis and evaluation of algorithms, data structures, languages,
and systems

#### ... For the Future You Want

Graduate studies

Scientific applications

Software design

Graphics and games programming

#### Rationale:

A program in computer science requires a broad range of skills, some as general as problem analysis and problem solving, others more technical, such as programming and data management. The core of the computer science POE is designed to promote the development of these skills. In addition to emphasizing mathematical techniques appropriate to "number crunching" the mathematics courses, also encourage a systematic approach to problem solving and become essential tools for the analysis and evaluation of algorithms, data structures, languages, and systems. The lower division course reinforce problem solving while also developing algorithm design and data management skills and providing knowledge of the operation and organization of computer hardware and software.

With this foundation, one can then pursue greater specialization, tailoring the program toward scientific applications, software design, systems analysis, or preparation for graduate studies. The requisite skills and relevant courses for these options vary somewhat and should be chosen in consultation with an appropriate advisor.

#### POE Credit Total = 62-63

Students must complete at least 18 credits at the 300/400-level. Any course exception must be approved by the advisor and/or department chair.