Computer Code Name CPE 100 Introduction to Computer Engineering CPE 110 Computer Engineering Exploration CPE 112 Discrete Mathematics for Computer Engineers CPE 130 Algorithms and Data Structures Course Description and strengths Programming concepts will be covered while the syntax and semantics of C language will be emphasized. Lab hours will focus on programming experience. Subject matter includes input, output, expression grammar, library function calls, selection structures, looping construction, arrays, writing functions, understanding pointers, file processing, and using structures. An introduction to object-oriented programming with C++ will also be covered. Introduction to practical concepts of computer systems and its components including basic electric circuits, electronic devices, logic gates and digital circuits, and hardware interfacing. Hands-on experience focuses on computer simulations and experiments on the mentioned topics. Basics of logic: relations, mathematical reasoning and logical reasoning, propositional logic, and predicate logic. Introduction to logic programming, graphs, trees, finite automata and context-free grammar, and the Turing machine. Introduction to the complexity analysis of algorithms and to number theory. Introduction to data representation and structure, array, linked-listed, stacks and queues, trees, graphs, analysis of algorithms, recursion, sorting and searching algorithms, hashing, heap tree, binary search tree, AVL tree, breadth first search, dept first search, string processing, and data compression. CPE 214 Signals and Systems Introduction to signal and system. Continuous-time signals and systems: mathematical representation of signals, frequency-domain representation of signals, time-domain representation of systems, transform-domain representation of systems and continuous-time system architecture. Discrete-time signals and systems: mathematical representation of signals, frequency-domain representation of signals, time-domain representation of systems, transform-domain representation of systems and discrete-time system architecture. First order and higher order differential equations. Frequency response, Fourier analysis and Laplace transforms CPE 220 Digital Systems Design Number systems, codes, logic gates, Boolean algebra, logic functions, multi-level combinational logic and simplification, flip-flops and related devices, sequential logic design and optimization, types of registers and counters including design and implementation, programmable and steering logic, PALs and PLAs, multiplexers and selectors, logic design in computer simulation program. CPE 221 Circuits and Electronics for Computer Engineers Electrical units and definitions; fundamental laws; natural response; forced response; complete response; power; RMS value; AC circuits and polyphase circuits. Introduction to semiconductor devices; diodes, bipolar junction transistor(BJT), field-effect transistor(FET). DC biasing and AC small-signal analysis of BJT and FET amplifiers, frequency response consideration, operational amplifiers, basic DC power supply, A/D and D/A conversions, some useful circuits. Digital System Laboratory Experiments on digital circuit design using both simulation programs and actual circuits. The experiments consist of basic logic gates, clock generation circuits, counter circuits, encoder circuits, decoder circuits, shift register current, arithmetic circuits, multiplexer and demultiplexer circuits, digital-to-analog and analog-to-digital circuits, and design and implementation of Field Programmable Gate Array (FPGA) circuits. CPE 221 Computer Code CPE 222 Name Circuit and Electronic Laboratory Course Description and strengths Using some electronic measuring equipment with safety considerations to experiment on some useful electrical and electronic circuits that coincide with the CPE 221 course. CPE 223 Computer Architecture and Systems Topics cover processor technology, input and output, memory hierarchy, interleaved memory, bus, cache, pipelined architectures, computer arithmetic, and multiprocessors technology. The course will also discuss machine instructions and assembly language to be applied to actual microprocessor design for physical control and data communications. Experiments focus on microcomputer, microprocessor and microcontroller interfacing with physical devices. CPE 223 Digital System Design Number systems, codes, logic gates, Boolean algebra, logic functions, multi-level combinational logic and simplification, flip-flops and related devices, sequential logic design and optimization, types of registers and counters including design and implementation, programmable and steering logic, PALs and PLAs, multiplexers and selectors, logic design in computer simulation program. CPE 231 Principles of Programming Languages Programming language paradigms and the principle of programming language design are provided. The structure and design principles of programming languages consist of syntax and semantic, notion of type, role of variable declarations, bindings and scope, sequence control, subprogram control, and abstract data type. Four programming language paradigms include imperative programming, object-oriented programming, functional programming, and script programming. CPE 301 Seminar Under the supervision of faculty members, each student works independently, selects a topic from an academic paper in computer engineering, and prepares for a presentation and discussion in class. The selected topic may be related to the project topic in CPE 402. CPE 325 Computer Architecture and Systems Topics cover processor technology, Input and output, memory hierarchy, interleaved memory, bus, cache, pipelined architectures, computer arithmetic, and multiprocessors technology. The course will also discuss machine instructions and assembly language to be applied to actual microprocessor design for physical control and data communications. Database and ERP Systems Introduction to the practical concepts in database system analysis, design and implementation. Hands-on experience will also be emphasized in developing front-end software for a backend database of a client-server, 3-tier architecture with web browser interface. Theoretical aspects of relational databases general to all database products will be the focus, while specific database products including Microsoft SQL, Oracle, and MySQL will be covered. Database concepts covered include data modeling, SQL, database design, normalization, multi-user databases, access standards such as ODBC, ADO, and XML. Concepts in Enterprise Resource Planning will be covered throughout such as manufacturing, MRP, finance, human resource management, and inventory management. CPE 332 Computer Code Name Course Description and strengths This course introduces students to principles and techniques used to create functionally correct, easy to use, robust, reliable, and maintainable software systems. The course covers all phases of the software development lifecycle, focusing on practical approaches that can be applied in each phase. Lectures are supplemented by homework assignments to encourage problem-based learning. The course also includes a team-based collaborative term project that requires students to analyze a proposed software system and produce a set of development artifacts typical of a real-world software development project. CPE 333 Software Engineering CPE 334 Operating Systems CPE 341 Computer Networks CPE 342 Computer Network Laboratory Experiments for supporting the study of computer networking protocols. Network protocol analyzer software, basic router configuration commands, network interface and routing protocol configuration in computers and routers for IP networking. Analysis of TCP protocols, IP routing and addressing protocols. Operations of application layer protocols and network management protocols. CPE 403 Computer Engineering Project 2 Continuation and the completion of the project initiated in CPE 402 course. CPE 442 Computer Engineering Project 1 Students work in groups of 1-3 persons under the supervision of faculty members. Each group is encouraged to develop and design a systematic method to investigate and solve computer and information technology related problems that demand theoretical backing. The objective is to have students gain experience in systems development for a relatively large size project. CPE 442 Computer Network Laboratory Experiments supporting the study of computer networking protocols. Network protocol analyzer software, basic router configuration commands, network interface and routing protocol configuration in computers and routers for IP networking. Analysis of TCP protocols, IP routing and addressing protocols. Operations of application layer protocols and network management protocols. CSC 102 Computer Programming I Fundamental concepts of programming, variables, operators, elementary types, console input and output, programming style and documentation, program debugging, control statements, loops, functions, passing parameters by values, variable scope, one and two dimensional arrays, basic search and sort algorithms. CSC 103 Computer system, processor, memory and Input/Output modules, interconnections among these major components, central processing unit, control unit, registers, arithmetic and logic unit, instruction unit and interconnections among these components, Computer Architectures and Organization architectural issues, instruction-set design and data types, organizational issues, pipelining, parallel organization, multiple processors and vector processing organizations. Theoretical aspects of Operating systems: memory management, process management, I/O management, and information management. Issues on Job Control Language, Assembler, Loader, and Linker are covered. Some operating systems, compilers, interpreters and utilities are studied in detail. Fundamental concepts and protocols in computer communication networks, particularly IP networks. Packet switching and circuit switching networks, layered network architectures. Application layer protocols, socket programming, TCP/IP protocol suite, unicast and multicast routing protocols, link layer protocols and multiple access networks. Wired and wireless local area network standards, and basic mobile Internet protocols. Computer Code Name Course Description and strengths Computer Programming II Objects and classes, data field encapsulation, array of objects, strings, command-line arguments, file input and output, pointer concept, list structure, recursion, testing, test automation, testing techniques, fundamental object-oriented programming, superclasses and subclasses, polymorphism, abstract classes, interfaces, event-driven programming, and GUI. CSC 165 Discrete Mathematics Propositional logic, predicate logic, elementary number theory, methods of proof, set theory, proving set identities, counting and probability, permutations, combinations, binomial theorem, Pascal's triangle, conditional probability, functions, pigeonhole principle, relations, partial order relations, total order relations, sequences, mathematical induction, graphs and trees, paths and circuits, binary trees, and spanning trees, finite state machines. CSC 209 Data Structures Abstract data type in Java, pointer and vector in Java, running time and complexity, linked-lists, stacks, queues, trees, recursion, numerical case studies, trees, graph, binary heap, tree algorithms, sorting case studies, hash table, data compression, and string matching. CSC 210 Analysis and Design of Algorithms Computational problems, set and graphs, searching and sorting algorithms, brute force, divide-and-conquer, decrease-and-conquer, and transform-and-conquer approaches to problem solving, asymptotic efficiency of algorithms, algorithm optimizations using dynamic programming and greedy algorithms two major tradeoffs; space and time, of computing, and limitations of algorithm power. CSC 213 Systems Analysis and Design System component, System Development Life Cycle, analysis methodologies and Computer-aided Software Engineering tools, technical, operational, and economical feasibility studies, Data Flow Diagram, Entity Relationship Diagram, input design, output design, database design, documentation, and presentation. CSC 233 Programming Paradigms Review of grammars, languages and their syntax and semantics, parsing and ambiguity, Backus Normal Form (BNF), finite state grammars and recognizers, lexical scanners, implementation of symbol tables, context-free languages, push-down automata, and context- free parsing techniques, alternative programming paradigms (imperative, functional, logic, and so on). CSC 261 Statistics for Scientists Statistics, probability theory, probability distribution, sampling distribution, estimation hypothesis testing, test of goodness of fit and independence, analysis of variance and experimental design, simple linear regression, and multiple linear regression. CSC 317 Operating Systems CSC 318 Database Systems CSC 319 Object-Oriented Software Development CSC 105 Prerequisite: CSC 103 Computer Architecture and Organizations & CSC 209 Data Structures Database systems, database components and architecture, data modeling, database logical and physical design, Entity-relationship (ER) model, normalization, database languages, Structured Query Language (SQL), Relational Algebra, Relational Calculus, indexing, query optimization, and transaction management Object-oriented software development process, object-oriented principles, object and class design, reuse, object-oriented code quality, quality improvement techniques, error handling, design patterns, object-oriented systems and applications Computer Code CSC 320 Name Computer Networks CSC 321 Software Engineering CSC 323 Management Information Systems Course Description and strengths Introduction to computer networks, transmission media, structured cabling, concepts, horizontal cabling, backbone cabling, telecommunication spaces, testing and certification of cabling, cabling design, cabling installation, bridging, spanning tree protocol, Local Area Network (LAN), Ethernet, switch basics, Virtual Local Area Network (VLAN), internet address, static routing, dynamic routing, Routing Information Protocol (RIP), Open Shortest Path First (OSPF) routing, basic router configuration, serial connection, and wireless Local Area Network (LAN). Introduction to software engineering, software process, requirement analysis, system modeling, Graphical User Interface (GUI) design, architectural design, testing, software project management, software evolution, verification & validation, software cost estimation, software quality assurance, Capability Maturity Model Integration (CMMI), and Computer-Aided Software Engineering (CASE) tools. Introduction to computer-based information system, using technology as a competitive advantage, business computing system theory; system life cycle methodologies, computing technology and computer processing, database management system and data communications as a foundation for information system. CSC 334 Human-Computer Interaction Human behavior, methodologies for obtaining and interpreting human behavior: work activity analysis, observation techniques, questionnaire, task analysis and modeling techniques, methods for interface representation and prototyping tools, cognitive walkthroughs, usability studies and verbal protocol analysis, the four approaches to human-computer interaction, empirical, cognitive, predictive, and anthropomorphic and case studies. CSC 335 Computer Graphics Introduction to computer graphics, fundamental algorithms for two and three dimensional graphics, interactive, real-time rendering applications using Open Graphic Library (OpenGL), viewing pipeline, 3D geometry creation, transformations, the camera model, illumination, projections, and rasterization. CSC 344 Decision Support Systems Overview of information systems, Decision Support Systems (DSS) vs. other Information Systems (IS), human decision making processes, systems and models, types and architecture of DSS, issues in implementation of DSS project, hardware, supporting Operating System (OS) and platforms, mathematical models business intelligence, and business performance management. CSC 401 Selected Programming Language CSC 424 Software Project Management CSC 433 Software Quality Assurance To provide a comprehensive study of one or more selected programming languages. Selected languages may vary from semester to semester and will be announced before the starting of each semester. The objective is to introduce students to alternative programming languages. Project activities, defining, planning, leading, monitoring, constraints of performance specifications, schedule and budget, negotiating and writing contracts, scheduling tools, time estimation, network diagrams, team organization, support team, role of project manager, monitoring tools, and project cost reports. Experimental design and analysis, measurement and validation, data collection and analysis, implementing software quality program, measuring the software process and product quality attributes, making predictions, assuring software quality with measurements, and ISO 9000 Series for software production. Computer Code Name Course Description and strengths CSC 446 Data Mining Introduction to data mining and machine learning, concepts, instances, and attributes, classification methods, decision trees, evaluation and credibility, evaluation with lift and cost, data preparation for knowledge discovery, clustering, association rules, visualization, summarization, and deviation detection, applications in targeted marketing and customer modeling, applications with genomic microarray data analysis, applications in other areas, data mining and society and its future direction, and advanced topics in data mining. CSC 489 Computer Security Management Computer security principles, managerial aspects of security: confidentiality, privacy, volatility in computerized information, protection of information against unauthorized observation, modification, and denial of service, encryption, legal and ethical issues, and disaster recovery planning. CSC 491 Platform-based Development Platform-based development is concerned with the design and development of software applications that reside on specific software platforms, taking into account platform-specific constraints. This course will provide an introduction and overview to web programming, multimedia development, mobile computing, app development, and robotics as examples of relevant platforms. Topics may include programming via platform-specific APIs, overview of platform languages such as HTML 5 and Objective C, programming under platform constraints, challenges with mobility and wireless communication, location-aware applications, and types of game platforms. CSC 492 Machine Learning Supervised learning, parametric/non-parametric learning, neural networks, support vector machines. Unsupervised learning, clustering, dimensionality reduction, kernel methods. Learning theory, reinforcement learning, adaptive control. Applications of machine learning, robotic control, data mining, bioinformatics, speech recognition, text and web data processing. CSC 495 Digital Image Processing This course gives students the knowledge of basic digital image processing concepts. Its theory and principles will be given throughout the semester. The digital image processing software, libraries and tools will be presented, taught and used to implement some simple and interesting image processing programs, simply to give the students the ideas of what image processing could be used. By acquiring these basic concepts, the students can further extend them for other related computer science courses, especially Computer Graphics (CG), Computer Vision, and Computer Aided Geometric Design (CAGD). CSC 4961/71 Problem-based Learning I & II 3 CSC 4962 Cobol Programming Workshop CSC 498 Computer Science Project I This course will cover new or advanced topics in computer science. The contents will be specified at the time this course is offered. This course may be repeated for credit only if the topics are different. This course will first cover the basics of the Cobol programming language, including structure, syntax and commands, and data structures. Then it will provide a series of practical programming workshop on Cobol. This course is the first portion of a project-based individual or group study investigation. Students will work under the supervision of faculty member(s). Each group must choose to conduct a systematic investigation of a computer science problem of its choice. Project topic must require a substantial background in computer science and the applications of studied concepts and techniques.