# Course Descriptions

**CSC 1510 Introduction to Information Technology ****4 cr.**

This course introduces students to how Information Technology can be leveraged for storing, managing, and exploring data in the Information age. Topics include: how computers work, information management, networks, operating systems, the Web, and a short introduction to computer programming. Not open to computer science majors. Satisfies the mathematics and science distribution requirement. *Four hours per week.*

**CSC 1520 General Computer Science 4 cr.**

The perception that Computer Science equals programming is a simplification that misrepresents the breadth of what Computer Scientists do and how we approach the world. This course introduces freshman Computer Science majors to the breadth of their discipline, from examining the physical computer and how it stores digital data to understanding classic problem-solving. Time will be spent on the topics of mathematics that tie most directly into problems in our field. Students will also work on collaborative interdisciplinary projects with introductory students in the Engineering majors throughout the semester. *Four hours per week.*

**CSC 1610 Problem Solving with Programming 4 cr.**

An introduction to computer science techniques with an emphasis on algorithm development and structured programming. Topics include program development, modularity, streams, control structures, functions, recursion and arrays. Satisfies the mathematics and science distribution requirement. *Four hours per week.*

**CSC 1611 Problem Solving with Python 4 cr.**

An introduction to computer science techniques with an emphasis on algorithm development and structured programming in the Python programming language. Topics include program development, modularity, control structures, functions, recursion, lists, dictionaries, tuples, and files. Satisfies the mathematics and science distribution requirement. *Four hours per week.*

**CSC 2001, 2002, 2003, 2004 Information Technology Internship 1 cr. ea.**

Student interns are placed in the Merrimack College Information technology Center and are expected to work 4 hours per week for 15 weeks under the supervision of the manager of User Services.

**CSC 2620 Object Oriented Programming 4 cr.**

A study of object oriented design and its key concepts: data abstraction, inheritance, information hiding, polymorphism, and encapsulation. Object oriented design and analysis concepts will be introduced and implemented using UML. Programs illustrating key concepts will be written in Java. Prerequisite: CSC 1610 or CSC 1611 with a minimum passing grade of C or consent of the instructor. *Four hours per week.*

** CSC 2710 Analysis of Algorithms 4 cr.
** Introduction to the basic principles and techniques for analyzing algorithms. A discussion of the asymptotic complexity of algorithms using standard measures in the best, average, and worst cases. Applications of the basic principles and techniques and study of upper and lower bounds of standard computer science problems including: searching, sorting, graphs, string matching, polynomial, and matrix algorithms. Basic strategies for developing algorithmic solutions to problems using divide and conquer, dynamic programming, and greedy techniques will be covered. Introduction to NP-completeness problem will also be discussed. Prerequisites: A grade of a C or better in both MTH 1314 and CSC 2820 or consent of instructor.

*Four hours per week.*

**CSC 2820 Data Structures 4 cr.**

Basic concepts in the representation and manipulation of data. Topics include: data abstraction and classes, dynamic memory, linked lists, stacks, queues, trees, sorting techniques and graphs. Prerequisite: CSC 1610 with a minimum passing grade of C or consent of the instructor. Corequisite: MTH 1314. Satisfies the mathematics and science distribution requirement. *Four hours per week.*

**CSC 3320 Operating Systems 4 cr.**

This course will provide a clear description of the concepts that underlie any operating system. Topics discussed will include process management, input/output, memory management, the file system, protection and security, concurrency, and distributed systems. Examples drawn from UNIX and Microsoft Windows will be used. Programming projects will introduce students to system level programming. Prerequisite: A grade of a C or better in CSC 2820. *Four hours per week.*

**CSC 3335 Artificial Intelligence 4 cr.**

This course explores the concept of the thinking machine, capable of its own reasoning and extending itself beyond the limits of its programming. Core topics focus on extending a machine’s ability to search for its own solutions through the exploration of problem spaces and the use of reasoning through propositional and first-order logic. Advanced topics may include game theory, expert systems, machine learning, artificial life, and natural language understanding. Course time is also spent on discussing the impact of the idea of the thinking machine on philosophy, ethics, and society. Prerequisites: A grade of a C or better in both CSC 2820 and MTH 1314. *Four hours per week.*

**CSC 3500 Web Development II 4 cr.**

This course is a continuation of Web Development I (CSC3950), and in this course students will explore web development through the use of server-side programming, databases, Ajax, and XML. Students will also be exposed to developing sites for mobile platforms, and by the end of the semester, students will have the tools to produce fully-fledged web sites that are up to industry usability standards. Prerequisite: CSC 3950. *Four hours a week.*

**CSC 3555 Theory of Computation 4 cr.**

A study of the theoretical foundations of computer science and computability. Students will explore formal languages (regular and context free languages), their acceptance by finite state automata, and their description by regular expressions and context free grammars. Turing machines will be studied and the Church-Turing Thesis. The limitations of algorithmic computation will be examined. Students will apply theoretical concepts to concrete problems. Prerequisite: A grade of a C or better in both CSC 2710 and MTH 1314. *Four hours a week.*

**CSC 3725 / MTH 3725 Numerical Analysis 4 cr.**

Theory and application of selected topics from numerical analysis. Topics include: solutions of equations and systems of equations, interpolation, numerical differentiation and integration, and numerical solution of differential equations. Error bounds are treated. Emphasis given to methods that can be implemented on a computer. If time allows, other topics may be added such as least Squares and Eigen Values. Prerequisites: MTH 1218 and CSC 1610 or consent of the instructor. *Four hours per week.*

**CSC 3810 Database Principles 4 cr.**

The study of the concepts and structures necessary to design and implement a Database Management System (DBMS) focusing on modern relational database models. Data design and models will be examined. Topics include relational database models, database modeling concepts, schemas, normalization, DDL and DML (primarily SQL), file organizations, concurrency control, security controls, and object-oriented databases. Prerequisite A grade of a C or better in CSC 2620. *Four hours per week.*

**CSC 3875 System Administration and Privacy 4 cr.**

This course puts the student in ethical situations through hands on laboratory exercises and research. It also addresses specific privacy and ethical concerns that the average user may not be aware of in their day to day activities. In addition, this course also is an introduction to the linux operating system which will include the internals of how Linux boots, runs and operates; system administration tasks; monitoring system resources; kernel loadable modules; configuration settings, and understanding the desktop GUI. This is a required course for It majors, a major elective for EE Majors, and an open elective for all others. Prerequisites: EITHER CSC 4055 (Network Security) OR CSC/EEN 3935 (Data Networking). *Four hours lecture/lab a week.*

**CSC 3950 Web Development I 4 cr.**

This course takes a look at web development from the client-side perspective. Students will learn to build web pages in HTML5, style the pages using CSS, and write scripts for client-side event handling and dynamic pages in JavaScript. In addition, students will be exposed to fundamental user-interface design principles from a standpoint of usability, including an exploration of human-computer interaction. Prerequisite: A grade of a C or better in CSC 2620. *Four hours per week.*

**CSC 4720 (Formerly CSC 3720) Computer Architecture 4 cr.**

The course covers the analysis and design of the major elements of a digital computer. The specification of the interconnection of these elements to form a digital computer is also covered. This specification is accomplished with the aid of a special purpose register-transfer language (similar to a programming language). Control of the register-transfer sequence is treated from both the hardwired and microprogrammed viewpoints. Interrupts and I/O are treated. The MIPS assembly language will also be covered throughout the course. Prerequisite: CSC 1610, EEN 1200 with a minimum passing grade of C in both classes.

*Four hours per week.*

**CSC 4805 Directed Study 2 cr.**

Qualified students may propose a course of individual study and work to be conducted under the direction of a faulty member. May be taken more than once. Prerequisite: Consent of the instructor with approval of department.

**CSC 4815 Directed Study, Special Projects 4 cr.**

Qualified students may propose a course of individual study and work to be conducted under the direction of a faulty member. May be taken more than once. Prerequisite: Consent of the instructor with approval of department.

**CSC 4905 Computer Science Seminar 4 cr.**

Special topics class.

**CSC 49(1/2)0 - Senior Capstone (W)**

This CS/IT Major Capstone Course is an in-depth study of the methodologies involved in researching, designing, developing, implementing, and maintaining software and technology systems. The course will focus on large-scale semester-long projects with multiple developers and IT personnel, during which students work in small development teams producing a product for a client. Students put to use good object-oriented design practices and methods. This course serves as a capstone experience calling on a variety of knowledge and skills and involving significant practice in professional writing in both collaborative and individual environments for different audiences: the team, the manager, the client, and the user, with an emphasis on professional conduct, skills, and both written and oral communication. *Four hours per week.*

**CSC 5055 (Formerly CSC4055) Computer and Network Security 4 cr.**

This course is a survey on network and computer security technology. all of the basic building blocks of network security, including access control, intrusion prevention, malicious software, conventional and public key cryptography, authentication, digital signature, and many of the techniques used to protect computers will be covered. Prerequisites: A grade of a C or better in CSC 1610 and JR Standing. *Four hours per week.*

**CSC 5120 (Formerly CSC 3120) Programming Language Principles 4 cr.**

This course explores the underlying nature of computer programming languages and how they are processed. Topics include language syntax and semantics, parsing, variable binding and scope, functions and parameter passing, control flow, recursion, and data types. Alternative paradigms of programming, including functional languages and scripting languages, will be explored in case studies, labs, and regular programming assignments. Prerequisite: A grade of a C or better in CSC 2820. *Four hours per week.*

**CSC5210 Computer Graphics 4 cr.**

This course explores the mathematical tools, data structures, algorithms, and hardware associated with the generation of 2D imagery and 3D scenes on the computer. Topics include OpenGL programming, 3D geometric transformations, cameras, shading, texture mapping, modelling, surfaces, terrain, and viewing and visible surface determination. Advanced topics, such as rendering, shadows, shaders, and simulation are covered as time permits. The course includes several significantly scoped programming projects. Prerequisite: A grade of a C or better in CSC 2620 and CSC 2820. A strong math background is required. *Four hours a week.*

**CSC 5925 (Formerly CSC 3925) Data Communications 4 cr.**

An introduction to the fundamentals of data communications for the computer scientists. Topics include asynchronous and synchronous transmission, analog and digital transmission of data, modulation and demodulation, multiplexing, transmission median, common carriers, communication devices, error control and recovery, message switching, packet switching, LANS, polling techniques, protocols, distributed data processing, High Speed LANS, network Security, Spread Spectrum, and Cellular Wireless networks. Prerequisites: A grade of a C or better in CSC 1610 and Junior standing. *Four hours per week.*

**CSC 5935/EEN 3935 (Formerly CSC 3935) Data Networking 4 cr.**

The Internet is the mainstream pathway for data communications today. The major components studied include both the hardware elements: hubs, switches, bridges, and routers and the major software elements: Five layer TCP/IP stack. The student will learn about all of these in detail during class and laboratory assignments. Prerequisite: CSC 3925. *Four hours per week.*

**CSC 6010 Theory of Computation II 4 cr.**

This continuation of CSC 3555, Theory of Computation, will explore the ideas of computability and complexity in more detail. The course will cover the topics of Turing Machines and other advanced models of computation (circuit model, oracle machines, alternating machines); complexity classes including: PSPACE, P, NP, coNP, L, #P, RP, BPP, IP, AC, and AC0; and the polynomial hierarchy. Students will be expected to develop thorough proof-writing, reduction, and computational techniques, tested through regular quizzes and homework assignments.

**CSC 6020 Advanced Operating Systems**

This course is an introduction to Operating Systems at the graduate level. Topics discussed will include in depth discussions of: process management, input/output, memory management, the file system, protection and security, concurrency, distributed systems, and system virtualization. Course will require significant systems programming in the POSIX operating system model. Examples will be drawn from enterprise class operating systems. Four hours a week.

**CSC 6030 Analysis of Algorithms II cr.**

This course provides an exploration of advanced algorithms in terms of design, efficiency analysis, and implementation. It includes an in-depth look at networks and flows, dynamic and genetic algorithms, approximation algorithms, amortized analysis, linear and integer programming, computational geometry, and other advanced topics as time allows.

**CSC 6120 Network Security II 4 cr.**

This course focuses on the systematic development and analysis of network security protocols. Topics include: advanced study of authentication protocols, advanced key agreement protocols, anonymity protocols, designing security protocols, adversarial modeling, and an analysis techniques. Analysis techniques may include: Strand Spaces, BAN Logic, and the Applied π-Calculus. Readings will be drawn from the literature.

**CSC 6100 Cryptography 4 cr. **

This course is an introduction to modern cryptography at the graduate level. Topics will include a rigorous treatment of fundamental primitives including: theoretical and applied aspects of symmetric and asymmetric cryptography with associated security models, message authentication codes, stream ciphers, cryptographic hashing, and digital signatures. In addition, cryptographic protocols will also be studied. Necessary mathematics will be introduced as needed, though a strong background in mathematics is recommended.