CSC - Computer Science Course Descriptions
Is a thorough introduction to computers, including hardware and software concepts. Hands-on experience using micro-computer hardware and software tools is included. Elementary skills in using such computer tools as word processing, spreadsheets, database managers, and programming will be developed as time allows. Social issues involving computers will be discussed.
Serves three main purposes: to develop in students an understanding of the algorithmic formulation of methods for problem solving on a computer; to train students to use at least one procedural computer language; and to acquaint students with the basic properties of computers.
Augmenting Object-Oriented Programming, this course will provide students hands-on experience applying object-oriented programming language syntax, algorithms, and data structures to a variety of programming exercises and/or projects of varying complexity in an active learning environment. Non-majors can bypass this course with permission of the department chair.
Serves three main purposes: to develop in the students an understanding of the principles of object-oriented programming, to introduce the student to the algorithmic methods for problem solving on the computer, and to train students to use at least one object-oriented computer language.
Introduces data structures such as stacks, queues, lists, trees, and graphs in an object-oriented framework. Time and space complexity analysis will also be discussed. The material of this course is fundamental in the object-oriented analysis and solution to a wide variety of computing problems.
CSC 144 or permission of instructor.
This course enables the student educator to design and evaluate digital tools for various learning environments based on proven cognitive science illuminating how the brain processes and integrates new learning. Students will become familiar with pedagogical practices grounded in frameworks such as TPACK (Technological Pedagogical Content Knowledge) and SAMR (Substitution, Augmentation, Modification, and Redefinition) and aligned with the International Society for Technology in Education (ISTE) educator standards, the Ohio Standards for the Teaching Profession (OSTP), and the Specialized Professional Associations (SPA) standards for their area of licensure. Future educators will design technology-enhanced instruction appropriate to a variety of learners’ needs and connect their practice to a Catholic understanding of the important role of teachers in society. Finally, students seeking admission to the education program will begin the development of a personal e-Portfolio to which they will add digital artifacts as they progress through the program demonstrating their proficiency in content knowledge; classroom environments; planning, instruction and assessment; professional responsibility, technology, and diversity (meeting the distinct learning needs of P-12 students). This course is for those seeking teacher licensure.
Notes
Laptop required.
Develops an understanding of algorithmic problem-solving approaches using an object-oriented framework and programming language.
Provides an understanding of fundamental software architecture concepts, standards, drivers, styles, and design specification tenets including design patterns. Develop an understanding of UML method notations and tools to document architectures, and use of tradeoff methodologies (e.g., QAW, ATAM) to evaluate an architecture. Present tenets of technical and ethical debt. Throughout the course students will implement a core set of software design patterns using language of choice.
Studies the use of scripting languages and software tools for work in bioinformatics. Emphasis will be on data manipulation, file input and output, FASTA files, regular expressions and pattern matching, databases, and web programming.
Studies the fundamental algorithms used in bioinformatics. Attention will be paid to specific algorithms (e.g. for measuring DNA similarity and for constructing phylogenic trees), to algorithm design methods (e.g. exact vs. heuristic methods, and dynamic programing) as well as to the computational costs of the various algorithms (Big-O notation, and the difference between polynomial and exponential time algorithms).
This course serves as an introduction to statistical analysis and programming with applications in the natural sciences. Topics include data entry, basic programming, statistical tests such as the t-test, ANOVA, the analysis of survey data, data visualization. Emphasis will be placed on how to select the right tool, use it competently, and interpret the results.
Introduces students to the use of computers in the nursing profession. Topics include computer fluency in office technology, electronic medical record systems, healthcare and nursing informatics, healthcare documentation, and new technologies.
Notes
Additional course fee.
Nursing Major
Further prepares student educators for the effective use of computers and technology in the classroom. Through this course, students will learn the basic skills needed to evaluate, design, produce, and utilize multimedia products in educational, organizational, and communications environments.
Introduces students to the fundamentals of network and data communication technologies. Course topics include telecommunication media and equipment; data transmission and protocols; corporate, local, and wide area networks; intranets and internets; and network software and management. An introduction to electromagnetic concepts and principles is included to provide a technical foundation for these concepts.
Studies the design and the implementation querying of a database. The focus is on the development of effective SQL queries and the use of relational databases. Other database types and technologies will be discussed.
Artificial Intelligence (AI) seeks to replicate the mechanisms underlying thought and intelligent behavior, with a particular focus on their embodiment in machines. Core topics include the design of AI systems for search, probabilistic reasoning, planning, and machine learning, with an emphasis on human oversight in ensuring ethical and effective applications. The course introduces Machine Learning libraries in Python as well as basic AI/ML concepts and algorithms and explores how to apply them in the construction of systems that leverage machine learning within complex environments.
Studies the system development cycle with emphasis on techniques and tools, system documentation, data flow diagrams, system testing, and implementation. Students are expected to suggest, design, and implement a specific application system.
Provides an overview of Cloud Computing, its enabling technologies, main building blocks, and hands-on experience through projects utilizing public cloud infrastructures such as Amazon Web Services (AWS) or Microsoft Azure). The course will introduce cloud infrastructures, virtualization, software defined networks and storage, cloud storage, and programming models. Students will learn about different cloud storage concepts including data distribution, durability, consistency and redundancy, distributed file systems, NoSQL databases and object storage. Includes use of distributed programming models including message queues and stream processing.
Introduces procedural programming techniques using a procedural programming language such as C, FORTRAN or other appropriate language. Emphasis is placed on the analysis and design of numerical algorithms, which are useful in business and science. Other topics include file processing and parallel processing.
This course provides a comprehensive exploration of programming languages, starting with the theory of computation, including regular languages, grammars, and automata. Students will examine how computers execute operations at the hardware level and how assembly languages relate to machine architecture. The course then covers the process of compiling high-level code into machine-readable instructions. Students will also explore different programming language paradigms and their design principles, focusing on how languages abstract away hardware complexities to enable efficient software development. The student will also study three different programming languages and write a short project in each.
Data science is an interdisciplinary field which blends mathematics, computer science, and various domain-specific fields (such as bioinformatics). The goal is to extract usable information from large sets of data. This course will be an introduction to data science using R, Python or a similar language. Emphasis will be on exploratory data analysis, visualization, model fitting, classification, and prediction.
Studies the use of simulated evolution in computer science and biology. Primary emphasis will be on the use of evolutionary and genetic algorithms as tools for solving combinatorial optimization problems (including problems arising in bioinformatics). Secondary emphasis will be placed on construction of computer models designed to illuminate aspects of evolutionary theory (e.g. the computer evolution of strategies for playing the prisoner's dilemma as a model for the evolution of altruistic traits).
Covers the fundamental algorithms used in both symmetric key and public key cryptography. Algorithms include AES, Diffie-Hellman, RSA, elliptic curve cryptography, as well as cryptographical hash algorithms. Both mathematical foundations and computer implementations will be discussed during the course.
Is designed to teach computer science and computer information science majors the skills necessary to learn computer science on their own and communicate their knowledge to others in oral and written form. All students will attend presentations made by senior computer science students. Students will be required to write a short, independently-researched paper and present it to the other students in the junior seminar.
Junior Standing
Will introduce concepts of algorithm analysis, strategies, time and resource complexity and basic computability. Emphasizes algorithm development, adaptation, and cost/benefit analysis.
CSC 145 and
MTH 220 (May be taken concurrently with instructor permission)
Is a seminar in information resource management covering such topics as office automation, networks, distributed data processing, data integrity, and decision support systems.
Junior standing or permission of instructor
This course focuses on the design, management, and implementation of wired and wireless computer networks. Course topics expand on network software and management, switch and routing technologies, security fundamentals for devices, and integrating automation and programming into networks. Topics may include software defined networks, security issues and other advanced topics.
This course addresses the architectural components of distributed software architectures including modular open systems approach (MOSA), microservices and other cloud-native architectures. Course emphasis is on Software as a Service (SaaS). Examines the practical and security considerations implied. Topics include the considerations and advantages of SaaS, common architectures and examples, applications and adoptions. A course project focusing on the design, development and testing of a SaaS chain.
The front end is in charge of the website's aesthetic appearance and feel. Front-end developers strike a balance between art and science, combining code with visual design principles to create a great user experience. This course introduces one front-end web technology and includes a team course project focusing on the user experience of the implemented design using professional processes and tools.
Back end designers are responsible for a website's architecture and logic in the background. Back end developers strike the balance between efficiency and effectiveness of the site. This course introduces one back-end web technology and includes a team course project focusing on the quality of the implemented back-end design using professional processes and tools.
This course deals with understanding and evaluating the user experience of technology. including the processes and techniques of UX design. Process topics include contextual inquiry, contextual analysis, modeling, design ideation and sketching, conceptual design, prototyping, UX testing evaluation and reporting. Learning focuses on the development and presentation of a team-based UX project.
COM281 or CSC381 or PSY310 or PSY318 or permission of the instructor
Is a work-experience opportunity with the purpose of expanding education by applying accumulated knowledge in computer science/technology. The availability of internships is limited to upper-level students, normally seniors with a 2.5 quality point average. Students are approved individually by the academic department. A contract can be obtained from the Career Services Office in Starvaggi Hall. Internships count as general electives.
Computer science junior or senior standing and permission of the department chair. Internships must be preapproved.
This class gives the student a fundamental background in computer architecture and operating systems. This includes a brief introduction to computer organization using hardware description languages (such as VHDL), assembly language programming, hardware support for computer systems, as well as process and memory virtualization techniques fundamental to modern operating systems
.
Surveys the relationship between hardware architecture and both systems and applications software. The influence of processor and storage system architecture on software design is also studied.
Junior standing or permission of instructor
Considers the structure of operating systems involving design, implementation, and maintenance. Various types of mainframe, mini, and micro operating systems will be discussed. Includes systems programming to support operating system operations and driver development.
Is an introduction to the architecture of the microprocessors and Assembly Language. Concepts in digital logic, machine level of data, the assembly level machine organization, memory system organization, interfacing and functional organization are covered. Includes an introduction to pipelined memory architectures. Exercises in Assembly Programming and a hardware description language will illustrate some of these concepts.
Gives students an opportunity to plan and implement a significant project using previously obtained analytic and programming skills. Students will be responsible for the proposal, management, implementation, documentation, and communication of the project. Departmental guidance will be available when necessary.
Explores Artificial Intelligence (AI) as a means of developing systems. Explores current frameworks for AI system development. Includes issues in training, reliability and ethical considerations. Applies a framework and tool set to the design, testing and evaluation of an expert system. Areas of focus may include natural language processing, planning, image processing, data analysis. Includes examination of the impact and ethics of AI and its application.
Examines the underlying mathematical models and theories that are the basis of the modern computer. Topics include grammars, types of languages, types of automata, computability, and complexity.
Requires all computer science students to write a thesis on an approved topic in computer science. Students must consult closely with a departmental faculty member at each stage in the development of their theses. The thesis will be presented to students in the Junior Seminar.
Initiation of capstone project in computer science. This class is intended for junior or senior software engineering majors. Students will work on a team project to develop a secure, effective, and efficient capability of value to a customer through the application of software engineering theory, processes, tools, technologies and methodologies. The students are expected to complete their project in a way that shows proficiency in the software engineering processes and techniques, and demonstrates ethical professional conduct.
Culmination of capstone project in software engineering. This class is intended for junior or senior software engineering majors. Students will work on a team project to develop a secure, effective, and efficient capability of value to a customer through the application of software engineering theory, processes, tools, technologies and methodologies. The students are expected to complete their project in a way that shows proficiency in the software engineering processes and techniques, and demonstrates ethical professional conduct.