Computing Sciences
Chair: Daniel Joyce, Ph.D.
Office Location: Mendel Science Center Rm. 161
Telephone: (610) 519-7307
Website
About
The Department of Computing Sciences seeks to provide outstanding education, to advance scholarship, and to engage in activities that benefit society as a whole, in accordance to the University mission. The Department aims to equip students with a solid foundation in computing theory, and to prepare them for lifelong independent learning and innovative thinking in a constantly changing discipline. Its faculty members strive to maintain professional currency, and to involve students and colleagues in their research investigations. These endeavors support the University mission to transmit, pursue, and discover knowledge in an atmosphere of collegiality in the university community. Supported by a liberal arts education, the Department seeks to develop the total person, sensitive to social and ethical concerns affected by the computing discipline, and committed to addressing the needs of a diverse and interconnected modern society.
Programs
-
Computer Science Major -
Computer Science Minor -
Cybersecurity Minor
Courses
CSC 1010: Programming for All
- Log in to post comments
Programming fundamentals using the Python programming language: data, variables, selection, loops, arrays, input/output, basic graphics and functions. Object-oriented design: encapsulation, objects, classes and methods.
CSC 1020: Computing and the Web
- Log in to post comments
Information representation and manipulation; file systems and directories; compatibility and data exchange; security and privacy; elements of computer architectures and operating systems; computer networks, the Internet, and the World Wide Web; web site design principles and creation; PC-based examples and illustrations.
CSC 1035: Databases for Many Majors
- Log in to post comments
No background in computing necessary. Design and implementation of your own database as a group project. Cooperative learning techniques to demystify key concepts: the relational model, normalization, the Entity-Relationship model and SQL.
CSC 1040: Computing with Images
- Log in to post comments
Computing systems as tools for designing and publishing graphically rich material in many forms; image processing techniques and systems; image style and related tools; digital image processing theory; computational complexity; multimedia presentations.
CSC 1051: Algorithms & Data Struc I
- Log in to post comments
Object-oriented design: objects, classes, methods, encapsulation; programming fundamentals: data, variables, selection, loops, arrays, input/output; exceptions. EXCLUSION: This course may not be taken by students who have already taken and passed ECE 1620.
CSC 1052: Algorithms & Data Struc II
- Log in to post comments
Object-oriented design: inheritance, interfaces, polymorphism; problem analysis; recursion; abstract data types; dynamically linked structures; data structures: stacks, queues, lists, collections, trees, maps, priority queues, library collections framework.
CSC 1051 :C or CSC 2014 :C
CSC 1300: Discrete Structures
- Log in to post comments
Mathematical structures that support computer science: sets, matrices, trees, graphs, logic and proof, mathematical induction, relations, functions, sequences, summations, and elementary combinatorics.
CSC 1700: Analysis of Algorithms
- Log in to post comments
Efficiency classifications and mathematical analysis of recursive and nonrecursive algorithms; design techniques: brute force, greedy, divide-and-conquer, dynamic programming, backtracking, branch-and-bound, space and time tradeoffs; NP-completeness; approximation algorithms; computational problems: sorting, searching, string processing, graphs, arithmetic, linear algebra.
(CSC 1300 or MAT 2600) and (CSC 1052 or ECE 2620 or ECE 2160)
CSC 1800: Organ of Prog Languages
- Log in to post comments
High level language features: data types, control structures; formal lexical and syntactical analysis; operational semantics; language translation.
(CSC 1300 or MAT 2600) and (CSC 1052 or ECE 2620 or ECE 2160)
CSC 1990: Enrichment Sem in Computing
- Log in to post comments
Skills for success in computing: research questions and methodologies, oral and written presentation techniques, argumentation and critical thinking, time and project management strategies, study skills.
CSC 2000: Digital Divide,Theory&Praxis
- Log in to post comments
Students will research the effects of the digital divide and implement a program that addresses the needs of underserved high school students preparing for their transition to college.
CSC 1990
CSC 2014: Java Bootcamp
- Log in to post comments
Fast-paced coverage of object-oriented programming using Java and the Java API, including packages for creating graphics and applets; Java syntax and control structures; arrays; designing objects, classes, and methods; graphical user interfaces; input streams, exception handling and threads.
CSC 1010 or ECE 1620 or MIS 2020
CSC 2045: AI for All
- Log in to post comments
History of artificial intelligence. Principles of machine learning and training set development. Overview of natural language understanding technology and computer vision technology. Social and ethical issues. Survey of software tools for implementing artificial intelligence. For non-computer science/engineering majors.
CSC 1010
CSC 2053: Platform Based Computing
- Log in to post comments
Python APIs, internet programming and security, mobile app programming, a team project.
CSC 1052 or ECE 2620 or (ECE 2160 and ECE 2161)
CSC 2300: Statistics for Computing
- Log in to post comments
Probability, counting, discrete and continuous distributions, descriptive and inferential statistics, experimentation, reading of scientific papers -- all taught from the point of view of computer science. Some programming may be required.
CSC 1051 and CSC 1300
CSC 2400: Computer Systems I
- Log in to post comments
Architecture of computer systems: representation of data; processor, memory and I/O organization. Assembly language programming. C programming language constructs and their relationship to the underlying architecture. Basics of operating systems: interrupts, concurrency, process scheduling, security, networking.
CSC 1052 and (CSC 1300 or MAT 2600)
CSC 2405: Computer Systems II
- Log in to post comments
Processes, threads and concurrent programming. Scheduling and dispatching. Linking and relocation. Memory management. Virtual memory. System-level I/O Device management. File systems. Security and protection in depth. Real-time and embedded systems. System performance evaluation. Scripting.
CSC 2400
CSC 2993: Internship in Computing
- Log in to post comments
Internship in computer science involving computer system development, maintenance, or evaluation in an environment which supports sound software engineering techniques. Restricted to second semester sophomore with junior standing and above.
CSC 3010: Overview of Cybersecurity
- Log in to post comments
Exploration of the basic concepts and terminology in cybersecurity for students from a variety of technical or non-technical backgrounds; major sub-disciplines of cybersecurity; impact of cybersecurity on business, ethical, and technical levels; data protection concepts, privacy, and intellectual property; data protection techniques, encryption, and authentication; security in wired and wireless networks, operating systems, applications, databases, and the cloud; ethical hacking and vulnerability management; lab exercises and case studies to introduce technical concepts; prepares students to study cybersecurity in-depth in future coursework; course is the introductory required course for a minor in cybersecurity.
CSC 3080: Info Security & Protection
- Log in to post comments
Explores the criticality of protecting information's availability, accuracy, authenticity, confidentiality, and integrity. Analysis of topics to include redundancy, backup and recovery, business continuity, security technologies, and controls such as audit, change management and testing.
CSC 2400 or ECE 2042
CSC 3150: Game Development
- Log in to post comments
Theory of game development, game programming, artificial intelligence, state machines, 2D/3D assets, visual communication, game mechanics, navigation meshes, path planning.
CSC 1052 or ECE 2620 or (ECE 2160 and ECE 2161)
CSC 3300: Linear Algebra for Computing
- Log in to post comments
Fields, vectors and vector spaces, linear transformations, matrices and matrix algebra, eigenvalues and eigenvectors; Structures and computations in Python for these mathematical objects; Computational applications selected from data science, machine learning, computer vision, graphics, image processing, graph algorithms, quantum computing, information retrieval and web search.
CSC 1300
CSC 4170: Theory of Computation
- Log in to post comments
Finite automata and regular expressions; push down automata and context-free grammars; Turing machines; Church's thesis; computability; NP-completeness.
CSC 1700 :Y :D-
CSC 4181: Compiler Construction
- Log in to post comments
Lexical and syntactical analysis; code generation; error recovery; recursive descent compilation; handling of run-time environment.
CSC 2400 or ECE 2042
CSC 4300: Computer Graphics
- Log in to post comments
Hardware and software in computer graphics; graphics programming language; input/output device handling; modeling in 3D space; development of interactive software.
CSC 1052 :D- and MAT 2400
CSC 4450: Digital Forensics
- Log in to post comments
In-depth study of digital evidence presentation, digital forensic techniques, and data analysis. Password cracking, encryption/decryption, volatile data extraction and network forensics of advanced forensic tools, legal and ethical issues related to forensics and security management techniques.
CSC 2400 or ECE 2042
CSC 4480: Principles of Database Systems
- Log in to post comments
Concepts and technology of database management systems and data modeling with an emphasis on the relational model; database querying and normalization; physical data organization. A group project to design and implement a database is a key aspect of this course.
(CSC 1051 or ECE 1620 or ECE 1260) and (CSC 1300 or MAT 2600)
CSC 4500: Artificial Intelligence
- Log in to post comments
History of AI, what it is and isn't; the nature of intelligence and the question of its computer implementation; search algorithms; knowledge representation; automated deduction; machine perception techniques; machine learning; planning; problem solving.
CSC 1051 or ECE 1620 or (ECE 1260 and ECE 1261)
CSC 4505: Applied Machine Learning
- Log in to post comments
Introduction to machine learning through Python based projects; machine learning tools; supervised and unsupervised learning algorithms and modeling accuracy, bias, and overfitting issues.
(CSC 1052 or ECE 2620) and (CSC 1300 or MAT 2600) and (CSC 2300 or MAT 4310 or STAT 4310) and MAT 2400
CSC 4510: Machine Learn&Theory&Evolution
- Log in to post comments
The mathematical theory behind the design of software by detecting and extrapolating pattern; neural systems that adapt to new circumstances; decision tree induction; genetic algorithms and genetic programming; research foundations.
CSC 1700 and (CSC 2300 or MAT 4310 or STAT 4310) and MAT 2400
CSC 4550: Computing for Data Science
- Log in to post comments
The computing parts of the interdisciplinary subject, Data Science. Topics include: data cleaning, data wrangling, visualization, time series, machine learning fundamentals. Program libraries that support managing datasets. Students will complete a major project.
(CSC 1300 or MAT 2600) and (CSC 1052 or ECE 2620 or ECE 2160)
CSC 4598: Machine Translation
- Log in to post comments
Computer systems that translate human language transformations, such as readability and sentiment analysis, spam filtering, plagiarism detection, and other natural language processing techniques; typically includes collaboration with a non-Computer Science course on team-based student projects.
CSC 1052 or ECE 2620 or (ECE 2160 and ECE 2161)
CSC 4630: Software Dev and Systems
- Log in to post comments
Operating system structures; system calls; system libraries; interprocess communication; user-interface programming environments; software utilities; software portability.
(CSC 1600 or CSC 2405 or ECE 2044) and CSC 2053
CSC 4700: Software Engineering
- Log in to post comments
Management and production of software systems; the software life cycle; software design techniques and methodologies; participation in a team software development project.
CSC 2053
CSC 4790: Senior Projects
- Log in to post comments
Capstone course centered around a semester long sofware development or research project; project planning; requirements elicitation and specification; teamwork; oral presentations required of all students.
CSC 4700 :D-
CSC 4810: Mobile App Development
- Log in to post comments
Theory and practice of designing apps for mobile devices; interface design, platform-specific and platform-independent programming, sensor-based computing, cloud data management, security, and privacy; entrepreneurial practices for app development: ideation, business planning, and commercialization.
CSC 2053
CSC 4900: Networks and Security
- Log in to post comments
Organization of computer networks; TCP/IP protocols; switching and routing methods; IP addressing and forwarding; TCP flow and congestion control; client-server communication; cryptography: secret-key, public key, digital signatures; security attacks and defenses: authentication and authorization, denial of service, firewalls, VPNs.
CSC 2405
CSC 5930: Topics Computer Science
- Log in to post comments
Lecture presentation of selected topics in computer science. May be repeated for credit if topics are different. Prerequisites may be imposed depending on the topics.
CSC 5993: Independent Study
- Log in to post comments
Reading, research and/or projects in a selected area of computer science under the direction of a member of the staff. May be repeated for credit.
MSE 2400: CSC:Evol Lrng Cmp Robtcs Agnts
- Log in to post comments
This course explores how software designers and artificial intelligence researchers draw inspiration from biology and learning theory to design programs and robotic agents that learn and adapt to changes in their environment. No prior programming experience is required.