Administered by Department of Mathematics, Computer Science and Statistics
Effective Fall, 2006
56.110 Introduction to Computer Science (3) - Presents an introduction to computers, how computers process and manage data, are controlled, and their use in problem solving. Fundamental concepts include hardware, I/O systems, data communications, usage of the World Wide Web, building web pages, and programming in a language such as JavaScript, Visual Basic, or Python. Applications such as word processing, spreadsheets, presentation software, and database are included. Not appropriate and credit for 56.110 will not be given to a student who has taken Computer and Information Systems 92.150.
56.116 Algorithmic Processes (3) (Fall) - A practical introduction to programming for students without prior programming experience. Emphasis will be on algorithms and data structures needed for the processing of numeric data. A modern programming language such as C++ will be utilized along with mathematical software such as Matlab and Mathematica. Course work includes extensive programming activities.
56.117 Introduction to Computer Forensics (3) - An introduction to the command line environment and the concepts and hardware needed to do elementary forensic analysis and data recovery on the FAT (File Allocation Table) systems using only a hex editor.
56.120 Freshmen Seminar in Computer Ethics (1) (Fall) - The course considers ethical issues associated with all aspects of computing and creates an awareness of codes of ethics that have been adopted by various professional organizationals. The course acquaints students with the implications of these codes in the context of Bloomsburg University.
56.121 Object-Oriented Programming with Java (4) - This course introduces students to object-oriented programming ideas and techniques using the Java programming language. Topics include: classes, objects, fundamental data types, control structures, class design, testing, debugging, and Java documentation. Students develop moderate length programs following the design guidelines presented in the course.
56.122 Graphical User Intefaces in Java (4) - This course continues the study of object-oriented ideas and techniques using the Java language. Topics include arrays, interfaces and polymorphism, event handling, inheritance, graphical user interfaces, exceptions, and files and streams. Prerequisite: 56.121.
56.123 Visual Basic I (3) (Fall) - Visual Basic 1 provides an introduction to programming using Visual basic .Net. The course is designed for teaching students with little or no programming experience. Students are introduced to object oriented programming principles, event driven programming, and Graphical User Interface (GUI) design. The students learn the syntax of Visual basic.net language including data types, control structures, and object oriented programming concepts. The projects include creating games and event-driven applications that will allow users to access and manipulate data from sequential text files.
56.212 Web Programming (3) (Fall) - This course provides an introduction to Web Page Design using XHTML and Cascading Style Sheets (CSS). Best practices in Web Site Design, Web Site Organization, and Web Site Navigation are covered. Students are shown how to consistently use color and visual elements while designing Web pages and Web sites. Web Programming is a required course for the Web Development minor offered by the Department of Mathematics, Computer Science, and Statistics. Web Programming does not count as a required elective in the Mathematics or Computer Science major. Prerequisite: 56.110.
56.213 Elementary Topics in Computer Graphics and Multimedia (3) (Spring) - Introduces fundamental concepts and techniques of computer graphics and multimedia application authoring. The design and creation of media-rich, dynamic web pages will be emphasized. Several software packages selected from titles such as Photoshop, Flash, Director, Premiere, After Effects, and 3DS Max will be studied in depth, and student projects will be required. The exact content and emphasis will vary by semester. This course is an elective course in our Web Development minor. This course does not count as a required elective course in computer science or mathematics. Prerequisite: 56.110.
56.217 Computer Forensics File Systems I (3) - An introduction to basic computer forensic methodology and analysis of File Allocation Table (FAT) file systems with an emphasis on forensic information from slack space, unallocated space and windows artifacts obtained using DOS tools and techniques. Three hours of lecture per week. Prerequisite: A grade of C- or better in 56.117
56.218 Computer Forensics File Systems II (3) - Continuation of Computer Forensics File Systems I emphasizing basic forensic methodology and analysis in a variety of file systems (NTFS, HFS, ext2, ext3) with an emphasis on forensic information from slack space, unallocated space and windows artifacts obtained using DOS tools and techniques. Three hours of lecture per week. Prerequisite: A grade of C- or better in 56.217
56.221 Advanced Java (4) (Fall) -This course is designed to increase the student's breadth and flexibility as a programmer and is a prerequisite for most 300 and 400 level courses in computer science. The course completes our department's coverage of the Java programming language. The course will emphasize object oriented programming and design. We cover recursive programming, generic programming, database programming, concurrent programming, network programming, web programming with servlets, Java Server Paces and XML. Prerequisite: 56.122.
56.223 Visual Basic II (3) (Spring) - This course is a second course in programming with Visual Basic.Net programming language. All students are expected to have successfully completed 56.123- Visual Basic 1. The goal of this course is to provide the student with in depth knowledge for designing and implementing windows based event driven applications that access databases. Special attention is given to ADO.Net technologies that are used to develop real world applications. Students will also learn to work with Crystal Reports.
56.240 Embedded Systems Languages (3) (Fall) - Binary number systems and arithmetic. C and assembly language programming for hardware control. Processor organization and concepts. Prerequisite: 56.122
56.255 Data Structures using C++ (3) (Spring) - This course focuses on the specification, design and implementation of linear data structures such as Arrays, Linked Lists, Stacks, Queues and hash tables. Students will use C++ language features for implementing solutions using these data structures. Students will also be introduced to the C++ Standard Template Library, recursion and exception handling. Prerequisite: 56.240.
56.317 Forensic Analysis in a Windows Environment (3) - An extension of Computer Forensics File Systems I and II emphasizing basic and intermediate forensic methodology, including reporting, used on a variety of file systems (FAT, NTFS, HFS, ext2 and ext3) using windows tools and techniques Prerequisite: 56.218 or permission of the instructor.
56.323 Artificial Intelligence (3) (Fall, even-numbered years) - This course provides students with an understanding of the philosophy, content, methods, successes, and failures of artificial intelligence. The course includes: History of AI, Knowledge Representation, Game Playing, Expert Systems, Logic and Theorem Proving, AI search strategies, natural language processing, neural networks, genetic algorithms and problem solving. Prerequisite: 53.185 and 56.255.
56.330 Computer Organization (3) (Spring) - This course surveys the organization of computer elements at the circuit level. Topics include Boolean algebra; digital logic, processor instruction sets, and Finite State Machine representations of algorithmic processes. Prerequisite: 56.240.
56.348 Data Mining (3) (Spring, even-number years) - The goal of this course is to understand the concepts and issues involved in data mining and learn how to apply current software for tree-structured data analysis to real-world problems. Prerequisites: 53.141 (or 53.241), 53.185, and 56.121.
56.350 Organization of Programming Languages (3) (Fall) - This course is designed to enable the student to appreciate the role of programming languages in the programming process. It introduces the formal study of programming languages and the rationale for such study. Students will learn the variety of programming language constructs that have been implemented and their advantages and disadvantages. Students will also be able to critically evaluate particular programming language constructs. Prerequisite: 56.255.
56.355 Analysis of Algorithms and Data Structures (3) (Fall) - This course gives a detailed look at different algorithms and data structures. The students will also examine the performance of various algorithms and data structures. Particular attention is paid to algorithms for searching and sorting, graph algorithms, and techniques for implementing and manipulating various data structures using object-oriented programming techniques. NP-completeness will also be introduced. Prerequisite: 53.185 and 56.255.
56.356 Windows Programming (3) (Spring, odd-numbered years) - An introduction to creating Microsoft Windows application programs using standard libraries (Win32) and Microsoft's .NET object-oriented framework. The creation of graphical user interfaces and handling of Windows messages will be emphasized. Prerequisite: 56.221.
56.357 Principles of Database Design (3) (Fall) - This course provides a comprehensive understanding of the key concepts and terminology in the theory and design of relational databases. Students learn to create Entity Relationship Diagrams (ERD), normalize database tables, and use Structured Query Language (SQL) and PL/SQL programming to create database structures, access and manipulate data. Prerequisite: 56.121.
56.373 Numerical Methods in Computing (3) (Fall) - An analysis and application of various methods of numerically solving problems in the areas of: nonlinear equations; interpolation and polynomial approximation; numerical integration and differentiation; numerical linear algebra; and differential equations. The student will study, analyze, and execute numerical algorithms on the computer for specific numerical procedures. Prerequisite: 53.126 and 56.121.
56.375 Local Area Networks (3) (Fall, odd-numbered years) - This course examines in detail key local area network standards and the fundamental concepts of local area network (LAN) technology. It provides an understanding of network architecture, data transmission methods, and major LANs currently in use. LANs will be considered individually and in the context of the Internet. This investigation of LAN protocols, topologies, and network operating systems will include hands-on experience in installing and demonstrating peer-to-peer and client-server LANs. Prerequisites: 56.240 and 56.330.
56.386 Concurrent Programming and Foundations of Operating Systems (3) (Spring) - A study of the foundations of modern operating systems along with the concurrent programming problems associated with these systems. Students will write and test their own solutions to some of these problems. Problems encountered in the development of all modern systems will be covered along with possible solutions. Prerequisite: 56.221
56.410 Computer Graphics (3) (Spring, even-numbered years) - Presents the basic principles for the design, use, and understanding of graphics systems. Hardware and software components of graphics systems are examined, with a major emphasis on creating and manipulating graphics displays using a software graphics package; the package includes standard computer graphics algorithms. Two and three dimensional graphics, animation, color, hidden line and hidden surface algorithms are studied in depth. Prerequisites: 53.225 and 56.255.
56.417 Advanced Topics in Computer Forensics (3) - A continuation of Forensic Analysis in a Windows Environment emphasizing advanced forensic methodology, including reporting, on a variety of file systems (FAT, NTFS, HFS, ext2 and ext3) using windows tools and techniques Prerequisite: 56.317.
56.430 Computer Architecture (3) (Fall, even-numbered years) - High-performance processor architectures. Architectural design and implementation of computer systems. Topics include RISC and CISC instruction-set paradigms, parallel and multiprocessor systems, pipelining and superscalar processor designs, bus structures, and memory hierarchies. Prerequisite: 56.330.
56.444 Introduction to Parallel Processing (3) - This course will provide an overview of parallel processing, parallel architectures, design and analysis of parallel algorithms. The course will focus on the development and performance evaluation of parallel algorithms on parallel architectures. Prerequisite: 56.221.
56.450 Compiler Construction (3) - This course gives the students an introduction to the construction of compilers and interpreters. The compiler is broken down into its phases: Scanning, Parsing, Semantic Analysis, Optimization, and Code Generation. The students study the relevant theory in these phases as they program a small compiler. Prerequisite: 56.221 and 56.350.
56.456 The Theory of Computation (3) (Spring, odd-numbered years) - An introduction to automata, formal languages and computability. Topics include finite automata, pushdown automata, context-free grammars, Turing machines, algorithmically unsolvable problems and computational complexity. Prerequisites: 53.185 and either 56.121 or 56.123.
56.457 Database Design II (3) (Spring, odd-numbered years)- This course is a continuation of Database Design I. The students are expected to know relational database terminology, Entity Relationship Modeling, and the basics of PL/SQL programming. This is a project course in which students learn advanced theoretical concepts in Database Design and PL/SQL programming. The course covers System Development Life Cycle (SDLC), the Database Life Cycle (DBLC), Transaction management and concurrency control, Data Warehousing and Database Administration. The course also covers advanced topics in PL/SQL programming such as writing stored procedures and functions, creating triggers and handling exceptions. Students are expected to complete a project that involves creating an application that uses Oracle Forms to access and manipulate data and generate reports. These projects are to be presented in class. Prerequisite: 56.357.
56.461 Distributed Computing and Internet Programming (3) (Fall, odd-numbered years) - This course presents programming topics important in Client-Server and Distributed Computing applications. We also cover Web Services applications topics. Students will complete Java based programming project using different Distributed and Internet programming principles and techniques. Topics covered will include: Security, Networking, XML, RMI, JDBC, Persistence, N-tier applications, Java Server Pages, Servlets, Enterprise Java Beans, and Application Servers. Prerequisite: 56.221.
56.471 Numerical Analysis (3) - An advanced course in using Fortran, in the application of the computer to the solution of problems in science, mathematics, and engineering. Emphasis on numerical differentiation and the solution of differential equations. Runge-Kutta and Adams methods for initial-value problems. Shooting and finite difference methods for boundary value problems. Systems of differential equations. Prerequisites: 53.322 and 53.373.
56.472 Matrix Computation (3) - Presents a computer-oriented analysis of matrices. Includes Gaussian reduction, LDU factorization, special reduction techniques for tridiagonal matrices, iterative methods, and a study of the matrix eigenvalue problem. Prerequisites: 53.118 or 53.225, and 53.373.
56.476 Introduction to Computer Networks (3) (Spring) - A hands-on introduction to concepts and issues of computer networks. Course introduces theoretical issues of general computer networks along with installation and configuration of a simple local area network. Computer and network hardware and software are surveyed. This course does not count as a computer science elective for computer science majors. Prequisites: programming course or equivalent experience.
56.480 Object-Oriented Software Engineering (4) (Spring)- This project course presents Object-Oriented Software Development techniques that allow a group of programmers to successfully complete a large software development project. Teams of three to five students complete a large software project that starts with understanding user requirements and finishes with a presentation of their final solution. Unified Modeling Language Notations are used by the students to construct and model their software project. Prerequisites: 56.221 and Junior/Senior Standing.
56.491 Special Topics in Computer Science (3) - Presents an area of computer science which is not available as a regular course offering. Prerequisite: Consent of the instructor.
56.497 Internship in Computer Science (2-12) - Provides computer science majors with an opportunity to acquire meaningful and professional on-site training and learning experiences in computer science at an industrial, private, or business work place. Note: A student may, with departmental approval, apply a maximum a maximum of 3 credits of internship toward the fulfillment of the mathematics major. Each 1 academic credit requires 40 hours of supervised work. The total credits of all internship credits must not exceed 12 credit hours. Prerequisites: Students must establish adequate course preparation or relative experience for the proposed internship. Internship applications must be submitted one month before the internship begins and must be approved by the department chairman.
56.576 Networks: Configuration and Implementation (3) - Introduces students to terminology, concepts, hardware and software related to the establishment of a local network and provides hands-on experience in the procedure necessary to install both a PC and Macintosh-based local area network.