Computer Engineering

Classes

SYCS 100 : Introduction to Systems and Computer Science

Provides information about the curriculum and the various concentration tracks, faculty research interest, departmental resources, problem solving, critical thinking, computational thinking. Introduces the software engineering design process and provides the opportunity for students to complete a design project.

Credits

2

SYCS 135 : Computer Science I

This course provides an introduction to the discipline of computer programming, and is designed to expose students to basic programming concepts and to the use of the C++ language. This course is designed to enhance the student’s ability to design, develop and test/debug programs. Each student will increase his or her skill in writing correct and maintainable programs. Emphasis will be placed on problem analysis and on the subsequent development of algorithms. Several standard data types will be discussed and the student will gain an understanding of the issues relating to the use, design and implementation of each type in C++. A major focus of the lectures will be to provide an overview of real-world problem solving concepts and top-down software design. No Prereq.

Credits

4

SYCS 136 : Computer Science II

Course exposes students to the software development life cycle with a focus on the concepts and use of the object-oriented paradigm in problem analysis, solution design, software development and implementation.  This course is designed to enhance the student’s ability to engineer software that is efficient, maintainable and cost efficient over its entire life cycle. Data abstraction is discussed in depth and students gain experience in the use of classes, object and member functions.  Students gain an understanding of the development of reusable abstract data types.  Software reuse is emphasized and object-oriented concepts are used throughout the course. O-notation and the complexity of algorithms are discussed at relevant points in the course.

Credits

3

Prerequisites

Computer Science I (with a grade of ‘C’ or better).

SYCS 165 : Scientific Computing for Engineers

Introduces programming and use of digital computers through symbolic programming. Programming includes general problem-solving and the systematic development of algorithms; use includes the coding of programs and practical experience in Maxima or Matlab.

Credits

3

SYCS 165 : Scientific Computing for Engineers

Introduces programming and use of digital computers through symbolic programming. Programming includes general problem-solving and the systematic development of algorithms; use includes the coding of programs and practical experience in Maxima or Matlab.

Credits

3

SYCS 201 : Computer Organization I

This course introduces students to assembly programming. The concepts that support assembly programming will be taught, including data formats, addressing modes, computer arithmetic etc. The instruction set of a particular assembly language will then be covered in details. The relationship between assembly programs and high-level language programs will also be revealed.

Credits

3

SYCS 202 : Computer Organization II

This course reveals how computers operate logically at the hardware level and presents the relationship between computer hardware and software. Topics include performance metrics, logic design, non-pipelined and pipelined datapath design, memory hierarchies, and I/O devices.

Credits

3

SYCS 203 : Object-Oriented Programming using Java

This course provides an introduction to Java programming and object-oriented programming concepts for students with previous programming experience in C/C++. The course provides a comprehensive overview of basic programming concepts in the Java programming language using an object-oriented approach.

Credits

1

Prerequisites

Computer Science II.

SYCS 211 : Unix Lab

This course will present the basic concepts of LINUX and UNIX operating systems. Topics that will be examined include Vi editor, Linux Command, directories, Disks and File systems, Users and Groups, File Permissions, Processes, file compression, basic network use, manage files, create and modify files, and Shell script.

Credits

1

Prerequisites

Computer Science I.

SYCS 341 : Theory of Computation

Introduction to the classical theory of computer science. A study of the formal relationships between machines, languages and grammars; we will cover regular, context-free, context-sensitive, recursive and recursive enumerable languages. Sequential machines and their applications to devices, processes, and programming. Models of computation: finite state automata, push down automata, Turing machines. The role of non-determinism.

Credits

3

Prerequisites

Computer Science III and Discrete Structures, Calculus II.

SYCS 350 : Structure of Programming Languages

The course will teach students the basic components of the design and analysis of computer programming languages as well as the fundamental computation theory that is required to understand those concepts. The course will also cover several non-imperative languages (unlike C, such as LISP and Prolog) to expose students to the diversity of programming languages.

Credits

3

Prerequisites

Computer Organization, Theory of Computation (After fall 2008).

SYCS 354 : Computer Science III

The course continues the study of data structures and algorithms, focusing on algorithmic design and problem analysis and the relationships between data representation, algorithm design, and program efficiency. Topics include advanced data structures, key algorithm design techniques, analysis of the time and space requirements of algorithms, and the subsequent development of solution of systems. Concrete examples will be drawn from a variety of domains, such as algorithms for trees and graphs, indexing and search, and real-world problems. 

Credits

3

Prerequisites

Computer Science II (with a grade of ‘C’ or better).

SYCS 363 : Large Scale Programming

This course will introduce the students to applications and systems in the large scale. Students will be introduced to the object-oriented method to software design using UML and will apply the object-oriented design/analysis techniques of UML to a realistic Java application. Students will gain familiarity with managing larger projects and OOA/D.

Credits

3

Prerequisites

Computer Science III

SYCS 364 : Web Services

Presents  topics in distributed computing with particular emphasis on Web Services using Microsoft .NET Framework.  Also discussion on layered protocols, the client-server model, remote procedure call.  Students program extensively in C# and Visual Basic .NET. Corequisites: 306-401 (Undergraduate Operating Systems) basic knowledge of operating system services, 306-450 Data Communications.

Credits

3

SYCS 375 : Software Engineering

This course will introduce students to the basic concepts of software engineering and the software development life cycle. The course will cover methodological techniques for software specification, design, implementation, testing, verification, and documentation. The course will also present the use of state-of-the-art tools for computer-aided software engineering (CASE).

Credits

3

Prerequisites

Computer Science III (SYCS 354)

SYCS 376 : Operations Research (formerly Systems II)

Methodology for planning, analyzing and evaluating optimal systems: identifying and structuring objectives and defining performance requirements that influence the design of the system. Synthesizing and analyzing alternative solutions and applying optimization techniques for the optimum queuing system. Applications to real world systems with open and closed queues with emphasis on computer systems using microcomputer software packages.

Credits

3

Prerequisites

SYCS 375 Systems Engineering I (new name Software Engineering)

SYCS 379 : Introduction to Human Computer Interaction

Students will learn the fundamental concepts of human-computer interaction and user-centered design thinking, through working in teams on an interaction design project, supported by lectures, readings, and discussions. They will learn to evaluate and design usable and appropriate software based on psychological, social, and technical analysis. They will become familiar with the variety of design and evaluation methods used in interaction design, and will get experience with these methods in their project. 

Credits

3

Prerequisites

Computer Science III

SYCS 390 : Ethical and Social Impact of Computing

This course will present the foundations of ethics in the context of computing. The broader social impact of computing and technology in general will also be reviewed. Areas of specific focus will include technology and human values, costs and benefits of technology, the character of technological change, and the social context of work in computer science and information technology.

Credits

3

SYCS 401 : Operating Systems

This course will present the basic concepts of operating systems. Topics that will be examined include processes and interprocess communication/synchronization, virtual memory, program loading and linking system calls and system programs; interrupt handling, device and memory management, process scheduling, deadlock and the trade-offs in the design of large-scale multitasking operating systems.

Credits

3

Prerequisites

Software Engineering, and Computer Organization.

SYCS 402 : Mobile Application Development

This course will introduce students to developing applications which target mobile devices. Students will be introduced to many issues unique to mobile applications, including synchronization, remote data access, security and sometimes-connected networks. They will research topics in these areas and develop a significant project which demonstrates their knowledge and understanding of these issues.

Credits

3

Prerequisites

Computer Science III

SYCS 410 : Modeling and Simulation

Introduces the fundamentals of system design and modeling. Emphasizes advantages and limitations of various modeling techniques for different applications. Introduces probability distributions typical of queuing models and presents in-depth discussions and experiments with existing simulation packages.

Credits

3

Prerequisites

Systems Engineering I (Software Engineering new course name), Probability and Statistics

SYCS 421 : Computer and Video Game Development

The course will span the software domains embedded in computer and video games. Topics such as game computational infrastructure, design, engines, and motion will be presented through discussion and assignments.  Game industry guest speakers will discuss software challenges and opportunities. Students completing this course will understand the software development process required to create a successful game and possess the programming expertise to create a simple game.

Credits

3

Prerequisites

Computer Science III, Systems Engineering I (new name Software Engineering)

SYCS 422 : Game Engine Programming

Game engine programming is introduced as a critical element in compelling game creation.  Programming activity will feature input capture, world integration, object motion, collision detection and audio scoring. Game performance metrics, code optimization and quality assurance testing procedures will be emphasized.  Code examples will be presented from XNA game studio and Torque. Course game project may be completed using a 2D or 3D game engine of choice including Torque, Gamestudio, Panda3D, or OGRE 3D rendering engine.

Credits

3

Prerequisites

Computer and Video Game Development.

SYCS 432 : Database Systems

This course will present the basic concepts of database systems. Topics that will be covered include basic relational database theory, relational database modeling, relational database design and implementation, normalization, transaction management, the SQL language and other languages and facilities provided by database management systems.

Credits

3

Prerequisites

Computer Science III.

SYCS 440 : Object-Oriented Programming

Introduces the fundamentals of object-oriented information system development with a focus on analysis and design phases. Data modeling and design principles such as data abstraction, information hiding, modularity, and coupling are viewed in the context of object-oriented paradigm. For object-oriented modeling Unified Modeling Language (UML) is introduced and used extensively throughout the course. Issues relating to making the transition from other software development methodologies are examined and risks involved in object-oriented process are discussed.

Credits

3

Prerequisites

Computer Science III

SYCS 450 : Data Communications and Network Programming

This is an introductory course on computer networking. It will cover the layering model of the Internet. The upper four layers (application, transport, network and data link) will be discussed in details with dominant networking protocols and algorithms introduced. Students will also learn how to do basic programming on the Internet.

Credits

3

Prerequisites

Computer Science III, Computer Organization, Analysis of Algorithms (new name Fundamentals of Algorithms), Discrete Structures

SYCS 451 : Applied Wireless Networking

From both the conceptual and practical standpoints, this course will present the basics of wireless networking. Topics that will be examined include the connection between wireless networks and the Internet, radio signal transmission fundamentals, wireless LAN/WAN industrial stands, and wireless network administration such as network design, installation, configuration, maintenance and trouble shooting.

Credits

3

Prerequisites

Data Communications

SYCS 453 : Intro to Cybersecurity I

This course introduces the basic concepts of cryptography. Various cipher systems Various cipher systems are presented including transposition and substitution systems, Block ciphers, RSA &Knapsack. Methods used to attack ciphers are discussed with emphasis on complexity. Case studies of use of cryptographic methods in communication systems are presented with some consideration given to privacy issues.

Credits

3

SYCS 454 : Intro to Cybersecurity II

Modern topics in computer security, including: protection, access control, operating systems security, network security, database security, applied cryptography, cryptographic protocols, secure programming practices, safe languages, mobile code, malware, privacy and anonymity, and case studies from real-world systems.

Credits

3

SYCS 460 : Advanced Systems Administration

Advanced system administration course provides a strong practical experience to Linux and Solaris operating systems. The course includes topics such as Samba (Windows file and print sharing), Email, Web serving with Apache, remote access, networking setup, Internet proxy services, fire wall and security administration, deploy LDAP in a Linux, Solaris and windows environment and also compile, configure and patch  a Kernel module. 

Credits

3

Prerequisites

Data Communications, Unix Lab

SYCS 470 : Fundamentals of Algorithms

Techniques for designing efficient algorithms, analyzing their complexity and applying these algorithms to a broad range of application settings. Methods for recognizing and dealing with hard problems are studied.

Credits

3

Prerequisites

SYCS 354: Computer Science III, MATH 189: Probability and Statistics

SYCS 472 : Systems Management Analysis

This course presents methodology for large-scale system design and analysis using modern semantic analysis techniques. Identification and definition of large-scale (community/industrial-based) problems. Discusses how to select and quantify measures of the severity of the problem. Presents different techniques for modeling alternative solutions to problems.

Credits

3

Prerequisites

Systems Engineering I (Software Engineering new course name).

SYCS 474 : Computational Biology

Introduces computational methods for understanding biological systems at the molecular level. Problem areas such as mapping and sequencing, sequence analysis, structure prediction, phylogenic inference, regulatory analysis. Techniques such as dynamic programming, Markov models, expectation-maximization, local search.

Credits

3

SYCS 475 : Intro to Machine Learning

Techniques for learning from data and applying these algorithms to application settings. Topics covered include Bayesian methods, linear classifiers such as the perceptron, regression, and non-parametric methods such as k-nearest neighbors.

Credits

3

SYCS 478 : Engineering Economic System Design

Presents methodology for system design. Methodology begins with identification and definition of private sector problems to which solutions are justified by economics. Discusses selection of appropriate economic measures for comparing alternative solutions such as present worth, equivalent annual cost, cost/benefit ratio, life cycle cost, return on investment payback period. Presents different techniques for modeling alternative solutions to the problems and predicting cost. Other topics discussed include decision-making, system implementation, operations and retirement.

Credits

3

Prerequisites

Systems Engineering II (new name Operations Research).

SYCS 480 : Digital Media and Multimedia Applications

This course provides an introduction to digital media fundamentals including audio, video formats, storage and delivery. Windows Media and other technology will be extensively utilized as a method for digital content manipulation, rights management and internet transfer. Students will be exposed to basic internet architecture, operations and useful world wide web (WWW) resources. In addition, a practical understanding of digital computational devices, communication ports and connection cables will be acquired.

Credits

3

Prerequisites

Junior Standing.

SYCS 491 : Senior Project I

Allows the senior student the opportunity to demonstrate his or her knowledge of systems engineering and computer science principles by application to a class project of his or her choosing, with the guidance and supervision of a faculty member. The student develops a proposal for the project, followed by an architectural design and detailed design, all of which must be presented in class.

Credits

2

Prerequisites

Systems Engineering I (Software Engineering new course name), Computer Organization.

SYCS 492 : Senior Project II

In part two, the senior student develops and implements the system solution to the proposed project. The system, most commonly comprising computer software, hardware, procedures, etc., is implemented and tested in the department's Systems Development Laboratory. The student is required to demonstrate the system solution to the faculty and the student body of the department.

Credits

2

Prerequisites

Senior Project I.

SYCS 493 : The Lean LaunchPad: Technology Entrepreneurship and Lean Startups

This course provides real world, hands-on learning on what it’s like to actually start a high-tech company. This class is not about how to write a business plan. It’s not an exercise on how smart you are in a classroom, or how well you use the research library to size markets. And the end result is not a Power Point slide deck for a VC presentation. And it is most definitely not an incubator where you come to build the―hot-idea that you have in mind. This is a practical class–essentially a lab, not a theory or―book class. Our goal, within the constraints of a class room and a limited amount of time, is to create an entrepreneurial experience for you with all of the pressures and demands of the real world in an early stage startup. You will be getting your hands dirty talking to customers, partners, competitors, as you encounter the chaos and uncertainty of how a startup actually works. You’ll work in teams learning how to turn a great idea into a great company. You’ll learn how to use a business model to brainstorm each part of a company and customer development to get out of the classroom to see whether any one other than you would want/use your product. Finally, based on the customer and market feedback you gathered, you would use agile development to rapidly iterate your product to build something customers would actually use and buy. Each day will be new adventure outside the classroom as you test each part of your business model and then share the hard earned knowledge with the rest of the class.

Credits

3

SYCS 498 : Special Topics: Robotics Programming

This course will present the basic concepts of programming intelligent robot systems. Topics that will be examined include a general introduction to robotics hardware, a survey of actuators and how to use them and programming sensors. Higher level concepts that will be covered include multi-robot communication, robot localization and path planning. Most topics covered in the course will have an associated project implemented with the Lego Mindstorms NXT kit.

Credits

3

Prerequisites

Computer Science or Scientific Computing for Engineers or (some prior programming experience), Calculus I.