Academic Catalog

Computer Science (CSC)

CSC 1007  Exploring Computer Science  (1 Credit)  
An experience on the construction of simple applications. Topics include fundamentals of software development, the computing professions, and trends in computer science and information technologies. Combines lectures, hands-on laboratories and application development projects. Typically offered: Summer.
CSC 1010  Science and Technology  (5 Credits)  
A hands-on exploration of the science behind the computer, the fundamental concepts of computing, and the impacts of computing technology on 21st Century life. Topics will be selected from such areas as the history of computing, data representation and storage, applications (SW creation, simulation, games and graphics), networking and communications, and artificial intelligence. Combines lecture, discussion, and laboratory experiences.
CSC 1130  Beginning Programming  (5 Credits)  
Students should have demonstrable computer literacy and are recommended to have two years of high school algebra, prior to taking this course. Covers designing a computerized solution to a problem (i.e. computational thinking), and structured programming concepts and implementation skills. In addition the course provides an introduction to a modern programming language.
CSC 1230  Problem Solving and Programming  (5 Credits)  
Students are advised to complete high school pre-calculus, math analysis, or equivalent and demonstrable computer literacy, prior to taking this course. Intended for students majoring in computer science, computer engineering, information systems or electrical engineering. An introduction to computer science, this course covers basics of problem-solving methods and algorithm development; modern programming methodologies; and fundamentals of a high-level block structured language. Solutions to mathematical and scientific problems and scenarios are emphasized.
CSC 1250  Problem Solving and Programming  (5 Credits)  
Students should have demonstrable computer literacy and are recommended to have two years of high school algebra, prior to taking this course. It Covers designing a computerized solution to a problem (i.e. computational thinking), and structured programming concepts and implementation skills. In addition, the course provides an introduction to a modern programming language. The course focuses on structured programming. Typically offered: Autumn, Winter.
CSC 1260  Structured Programming  (5 Credits)  
Intended for students majoring in computer science, computer engineering, software development, information systems, or electrical engineering. This course continues with the application of problem-solving methods and algorithm development. The course will explore modern programming methodologies and fundamentals of a high-level block-structured language. The emphasis of the course will be on using structured programming for problem solutions. Solutions to mathematical and scientific problems and scenarios are emphasized. Typically offered: Winter, Spring.
CSC 1521  Contemporary Math with Computing  (5 Credits)  
Explores topics that illustrate how mathematical methods and models permeate our economics, political, and personal lives. By investigation of diverse applications, a variety of problem-solving techniques will be introduced, including using the computer as a quantitative problem-solving tool. Introduces the mathematics behind the computer and also examines data representation, storage and manipulation.
CSC 1800  Special Topics in Computer Usage  (1-3 Credit)  
Prerequisite: Demonstratable computer literacy. Presentation of a topic of current interest in computer usage. Topics may vary between offerings.
CSC 2222  Programming Techniques  (3 Credits)  
Intermediate programming and problem-solving techniques that will introduce a different programming language than used in CSC 2330 and 2430.
CSC 2230  Computer Programming for Engineers  (5 Credits)  
A fast-paced introduction to computer programming focused on engineering and science analyses and designs using a programming language (like Python) or software tool (like MATLAB). Provides practical, structured programming and problem-solving skills focused on techniques for numerical solutions to engineering and science problems when no analytical solution exists. Fundamental programming topics include data types, inputs/outputs, variables, matrices, decisions, looping and subroutines, built-in and user-defined functions, files, and plotting. Simultaneously, this course covers key aspects of modeling and error analysis, roots and optimization, linear systems, numerical integration and differentiation, and ordinary differential equations. This course does not serve as the prerequisite to CSC 2430.
CSC 2330  Data Structures & Programming  (5 Credits)  
Prerequisites: 2.5 or better in 2 quarters (or 1 semester) of Object Oriented Programming taken outside SPU in a language other than C++. Transfer coursework must include basic programming, fundamentals of OOP, and basic data structures. This course will introduce the C++ programming language to students who already have experience with another object-oriented language. Fundamental C++ includes variables, control statements, functions, and arrays. The course will also explore recursion, dynamic memory and pointers, classes, encapsulation, methods, and inheritance. Typically offered: Autumn.
CSC 2430  Object Oriented Programming  (5 Credits)  
Intended for students majoring in computer science, computer engineering, or electrical engineering. This course continues with the application of problem-solving methods and algorithm development. The course is a continuation of CSC 1230, moving from structured programming to object-oriented programming (OOP). Introduces encapsulation, working and designing classes, methods, access control, composition, inheritance, and polymorphism. Furthermore, pointers and dynamic memory allocation are discussed. Typically offered: Autumn, Spring.
CSC 2431  Data Structures and Algorithms  (5 Credits)  
Covers linear data structures (lists, stacks, and queues) and hierarchical data structures including trees. Introduces fundamental time complexity with big O notation. Discusses searching and sorting algorithms. Introduces methods of organizing and accessing data (hashing and indexing), as well as external data structures. Explores data structures libraries (i.e. C++ STL, Java Collections Framework, etc.) Typically offered: Winter.
CSC 2951  Directed Study: "C++" Programming  (2 Credits)  
Presents fundamentals of the C++ programming language.
CSC 3000  Principles of Professional Practice  (1 Credit)  
Seminar and group discussion on topics related to the development of professional skills to prepare students for a computing career. Includes discussion of computer science and SPU's mission, leadership styles, workplace ethics, internship and resume preparation, interviewing skills development, and exploration of internship job opportunities. Typically offered: Autumn.
CSC 3011  Living in a Digital World  (3 Credits)  
Considers the ethical and societal impacts of computing technology on daily life. Sample topics include invasion of privacy, digital media, computer crime, intellectual property, software theft, computer security, technology in the workplace, social networking and the global information society. Class format is a combination of lecture and discussion.
CSC 3099  Technical Interview Preparation  (1 Credit)  
Provides students the space to solve real technical interview questions. Students will meet and create teams to discuss and work out coding problems under the supervision and support of an instructor. Typically offered: Spring.
CSC 3150  Systems Design  (5 Credits)  
Students propose a software product that they will design individually throughout the course. Three key artifacts are delivered: Project Initiation Request (which requires approval to proceed), the System Proposal and the System Specification documents. The course also surveys issues and tools used in the analysis and design of software systems. Topics include product motivation, project initiation, feasibility analysis; requirements gathering and modeling; data modeling; system architecture and security; and user-interface and program design. Typically offered: Spring.
CSC 3220  Applications Programming  (5 Credits)  
An implementation-oriented look at software development techniques used to create interactive applications, focusing on the use of object-oriented libraries to create back end applications. Topics include service oriented architecture, RESTful applications, event-driven programming, database interfaces, and tools for interface prototyping. Typically offered: Winter.
CSC 3221  Netcentric Computing  (5 Credits)  
Introduction to development of web applications. Topics include the internet and networking fundamentals, HTML, CSS and front-end programming, connecting front end with back end. Typically offered: Spring.
CSC 3310  Concepts in Programming Languages  (4 Credits)  
Explores organization, characteristics and structure of programming languages; examines and experiments with different programming languages' domains; and studies programming language specification. Typically offered: Autumn.
CSC 3350  Operating Systems Programming  (3 Credits)  
Introduction to operating systems and systems programming. Surveys systems software; operating system interface and functions; utilities and shell programming; linkers and loaders; translators; and processes, concurrency and concurrent programming.
CSC 3430  Algorithm Design and Analysis  (4 Credits)  
Studies algorithmic, problem solving approaches such as greedy, divide and conquer, and dynamic programming. Covers the design and analysis of algorithms for searching, sorting, string processing, table management, and graphs. Includes principles of computational complexity and analysis. Typically offered: Winter.
CSC 3750  Computer Architecture and Organization  (5 Credits)  
This course provides a programmer's perspective on the basic concepts underlying computer systems, including programs execution, data storage, and communication. It enables students to become more effective programmers, especially in dealing with issues of performance, robustness, and security. Topics covered include digital logic, computer structure, machine language, addressing, use and operation of assemblers, micro-architectures, instruction formats, and the memory hierarchy. Typically offered: Winter.
CSC 3760  Computer Organization and Assembly Language  (5 Credits)  
Studies organization and structuring of the major hardware components of computers. Includes mechanics of information transfer and control within a digital computer system. Introduces computer architecture, machine instruction sets and assembly language programming. Typically offered: Winter.
CSC 4151  Software Engineering I  (3 Credits)  
Explores the technical processes and practice of software engineering. Lecture/discussion topics include the development process, project planning and management, measurement and metrics, and software quality assurance. In this first of a three-quarter team software development sequence, student teams will complete and present the requirements analysis and a prototype of a software system. A final grade will be awarded for this course upon completion of CSC 4898. Typically offered: Autumn.
CSC 4152  Software Engineering II  (3 Credits)  
This course is the continuation of a three-quarter software development experience. Student teams will implement, test and deploy systems they began in CSC 4151. Class time will be primarily devoted to the application of software engineering principles to their project, technical reviews, and formal presentation of the completed system. A final grade will be awarded for this course upon completion of CSC 4898. Typically offered: Winter.
CSC 4210  Theory of Computation and Algorithm  (3 Credits)  
Introduction to theoretical topics in computer science. Includes formal languages, automata and parsing; Turing machines, decidability, recognizability and computability. Typically offered: Alternate Years.
CSC 4220  Information Security Fundamentals  (3 Credits)  
The Information Security Fundamentals course presents an overview of Information Security that includes theory, practice, and technology. Topics covered include security vulnerabilities and controls surrounding operating systems, networks, email, databases, wireless, the cloud, peer-to-peer, and distributed devices. Privacy, access control, cryptography, and ethical hacking are examined in depth. Typically offered: Alternate Years.
CSC 4250  Introduction to Artificial Intelligence  (3 Credits)  
Explores artificial intelligence with an integrated approach: theory, construction, application and societal implications. The students will learn the different technologies associated with AI, how to build simple learning algorithms, the use of available AI tools and machine learning software. In addition to the technological component, there will be discussions on the ethical and societal implications of AI. Typically offered: Alternate Years, Summer.
CSC 4310  Compiler Design  (3 Credits)  
Studies programming language translation and compiler design concepts; language recognition, symbol table management, semantic analysis, and code generation.
CSC 4350  Advanced Operating Systems  (3 Credits)  
Introduces the major functions of operating systems. Covers processes and concurrency; concurrent programming; resource allocation, contention and control; scheduling, memory management, and device management.
CSC 4410  Database Systems  (5 Credits)  
Introduces database concepts: relational databases, data models; object databases, data description (DDL) and manipulation (DML) languages; query facilities; data security, integrity and reliability; multi-user, distributed and web-based database processing. Introduces non-relational databases (NoSQL) and interaction with BigData repositories. Introduces database security topics, including SQL injection. Includes the design and implementation of applications using relational and/or non-relational database. Typically offered: Autumn.
CSC 4430  Advanced Programming  (3-5 Credit)  
Provides experience with advanced or specialized topics in software development. Topics and credits will vary; some offerings may require additional prerequisites depending on focus or environment.
CSC 4750  Computer Networks  (5 Credits)  
Students learn the fundamentals of the functioning of IP networks, focusing on all the relevant protocols and their interactions. Typically offered: Alternate Years.
CSC 4760  Advanced Computer Architecture  (5 Credits)  
Recommended Prerequisite: CSC 2431. Studies the architecture of multiprocessor, pipelined, and parallel computers. Emphasis is placed on principles of instruction level parallelism, multi-core processing, and distributed computing.
CSC 4800  Advanced Issues in Computer Science  (3-5 Credit)  
Examines a special interest topic in computer science. Topics and credits may vary between offerings. Computer science minors may take this course with instructor approval.
CSC 4898  Senior Capstone Seminar  (3 Credits)  
This senior capstone course will complete and deliver the software product started in CSC 4151 & CSC 4152, and explore topics and frontiers in computer science and information systems. Students will review and summarize their educational experience at SPU in a written essay. Preparation for a career and lifelong learning options are included. Students will investigate and write a term paper on one or more current topics within the computing industry. This course is the completion of a three-quarter team software product development sequence. Student teams will implement, test, and deliver the software product they began in CSC 4151 and CSC 4152. Class time will be devoted to applying software engineering principles to their project, technical reviews, formal presentations of the completed system, and to the other topics listed above. Typically offered: Spring.
CSC 4900  Independent Study in Computer Science  (1-5 Credit)  
Independent study and research in an advanced computer science topic.
CSC 4930  Practicum in Computer Science - University Service  (1-5 Credit)  
Practical experience in applied computer science that provides a service to the university. Examples include academic system support and programming; tutoring, grading and lab preparation. Includes an assessment of Christian service issues or experiences.
CSC 4931  Computer Science Practicum  (1-5 Credit)  
Practical experience in applied computer science such as in off-campus work experiences.
CSC 4940  Internship in Computer Science  (1-5 Credit)  
Provides a coordinated and supervised field experience in the computing sciences. Typically involves work in systems analysis and design, programming, quality assurance, and/or end-user support. Students will complete a project related to their vocational exploration experience. Includes an assessment of Christian service issues.
CSC 4941  Computer Science Professional Experience  (1 Credit)  
Students report on their professional experiences (such as internship or certification) through written reports and presentations. Students will also consider post-graduation aspects of entering the profession. To pass this course, the student will need to show proof of completion of an approved internship or professional certification. Typically offered: Autumn, Winter, Spring.
CSC 4950  Topics in Computer Science  (1-5 Credit)  
An advanced course studying a special interest topic in computer science. Topics and credits may vary between offerings.
CSC 4960  Project in Computer Science  (1-5 Credit)  
Independent work on a significant project in computer science.
CSC 4970  Directed Research in Computing Sciences  (2-5 Credit)  
The student will conduct research based on a proposal prepared prior to registering for this course. Results of the research will be prepared for presentation at undergraduate or professional symposia.