International Technological University Located at
2711 N. 1st St., San Jose, CA.
Phone: 888-488-4968
Go to Top

Computer Science, Software Engineering & Information and Cybersecurity Course Descriptions

CSC 501 Discrete Structures (3 credit hours)

This course is about discrete structures and forms an introduction to the theoretical side of computer science. Discrete structures and discrete mathematics turn out to be the “calculus” of computer science–these are the structures that students will use to model real-world problems, to build algorithms upon, and to program with (both for modeling problems as well as use in data-structures and algorithms). In this course students will learn about various discrete structures (numbers, sets, relations, functions, trees, graphs), how to talk about them (propositional and predicate logic), how to prove things about them (using contradiction, construction, induction, combinatorics), and how to read and write literate formal mathematics. Students will also get a quick introduction to key applications to algorithmic analysis (like asymptotic worst-case running time analysis for algorithms). This “calculus of computer science” will serve students as a foundation for computational thinking.

CSC 502 Principles of OS & Distributed Systems (3 credit hours)

The course begins with basic principles of a monolithic OS, as exemplified by Linux, MacOS, and Windows, then advances to more sophisticated details of processes, preemptive multiprocessing, lightweight processes, and interrupts various types of interprocess communications, demons, file systems, signals, and paging, which are present on each independent node of the network. Then it advances to the specific software subsets on each node of the aggregate operating system composed of the multitude of nodes. Then it advances to the higher level of the global system management components given for each node that coordinate the nodes’ activities to form a collaboration. Coordination of the cooperation of an individual node’s kernel OS and management component by the management system. In a properly functioning integration the whole distributed system should exhibit transparency which means that it appears to the user as one single OS entity.

CSC 505 The UNIX/Linux OS (3 credit hours)

Previously SEN 933. Linus is a Unix like operating system that has been ported to more hardware platforms than any other OS. It is the leading OS on servers, big computers including supercomputers, embedded sysems, and mobile devices such as android. This course focuses on the practical usage of the basic Linux operating system features. It introduces the student to the general principles of modern operating systems: preemptive multiprocessing; and of Linux in particular: shells, environment, shell variables, processes, threads, interprocess communication, the Unix file system, and shell scripts. Upon completion of this course the student will be able to work efficiently in a Linux or Unix environment, to tailor an environment to specific needs, to understand the basics of Linux system administration, to understand security risks, to write C programs that use system calls, and to write scripts for the C shell.

CSC 509 C Programming (3 credit hours)

Previously CS 880. The course is an introduction to the C language as per the chapters of the book by Kernighan & Ritchie. The key topics covered will be C basics including Control Flow, Functions, Pointers, Structures, Memory Allocation/DE Allocation, Input/output (command line & files). The course will be very hands-on and students will be expected to test code from C books (list will be given in class), and thus understand the concepts.

CSC 511 OO Programming With C++ (3 credit hours)

Previously SEN 909. This class teaches Objected Oriented Programming using C++. Prior exposure to C is helpful but not required as the basic concept of C programming will be reviewed. The topics covered include: Syntax of C++, classes and objects, encapsulation, inheritance, polymorphism, design for reuse, programming with objects, the standard template library, namespaces, exceptions, type casting, and file input/output.

CSC 512 Data Structures (3 credit hours)

Previously SEN 890. This course discusses the definition, design, and implementation of abstract data structures, including arrays, stacks, queues, heaps, and linked structures. Structures include hash tables, trees, and graphs. Algorithms for manipulating theses structures, searching, and sorting, and the simpler graph algorithms; introduction to the analysis of some sorting and searching algorithms.

CSC 515 iPhone Application Development (3 credit hours)

Previously SEN 965. This course provides a training in iPhone application development including: Introduction to Objective-C; iPhone technologies: multi-touch interface, accelerometer, GPS, maps, proximity sensor, dialer, address book and calendar. It helps students to understand the business aspects of an application development.

CSC 518 OO Programming with Java (3 credit hours)

Previously SEN 964. This course teaches OO programming with Java. The principles of OO Programming are general and go beyond just a certain programming language. Java is used to teach and practice these principles. In this context the idiosyncrasies of the Java language are taught as well: Basic features of the Java language: primitive data types, screen-keyboard I/O, file I/O, classes, constructors and initialization, references vs. primitive type variables, access modifiers, memory layout, control structures, arrays, inheritance, function overloading and overriding, dynamic binding, interfaces; command line arguments; exception handling; introduction to the platform independent Java GUI API with Swing.

CSC 519 Android Phone Application Development (3 credit hours)

Previously SEN 958. This course teaches the use of SDKs released by Google to facilitate the development of applications for the Android Phone. Android Phones are Linux based and are programmed in Java. This alone bodes very well for any software development on that platform: The Linux OS, the most powerful and easiest to manage of all operating systems, and the Java programming language with its superior GUI development capabilities. Knowledge of SDKs is certainly an advantage when developing for the Android platform.

CSC 520 Python Programming (3 credit hours)

Previously SEN 963. Programming and problem solving using Python. Emphasizes principles of software development, style, and testing. Topics include procedures and functions, iteration, recursion, arrays and vectors, strings, an operational model of procedure and function calls, algorithms, exceptions, object-oriented programming.

CSC 522 R Language Programming (3 credit hours)

Previously CS 860. This course is an introduction to the R programming language, which is the premier language for statistical computing, machine learning, and data mining. Basic facilities of R contained in the course include mathematical, graphical, and interactive web applications. R is an open-sourced language used extensively in industry and in academia research. The course demonstrates methods for obtaining data from various sources, along with manipulating that data into a format that can be easily used in machine learning and data mining algorithms. The course covers a multitude of interactive visualization techniques along with the ability to share visualizations through web applications. This course provides insight into functional programming. The course covers reading and writing to and from various sources, R built in data types, controlling the flow of execution, using operators, functions, and R packages. The course includes methods of sharing analytic results in professional formats used by technical journals.

CSC 525 HTML/CSS Programming (3 credit hours)

Previously SEN 910. This course will examine how to create web pages using HTML code. The use of Cascading Style Sheets (CSS) will also be covered. Basic website development tools and website design will be studied though the creation of several HTML/CSS web site projects.

CSC 527 Mobile Web Programming (3 credit hours)

Previously CS 882. No description available.

CSC 530 JavaScript Programming (3 credit hours)

Previously SEN 949. This course introduces JavaScript as a programming language. It will talk about variables, data types, functions JavaScript OOP how to use JavaScript to access and manipulate BOM how to use JavaScript to access and manipulate DOM JavaScript event handling AJAX.

CSC 532 Client Programming with JS/jQuery (3 credit hours)

Previously SEN 951. jQuery is a JavaScript library designed to simplify the client-side scripting of HTML. It is designed to make it easier to navigate a document, select DOM elements, create animations, handle events, and develop Ajax applications. The topics of the course include: Basic jQuery syntax, jQuery element selectors, jQuery event handling, Ajax using jQuery, jQuery UI library.

CSC 535 Server Programming with PHP (3 credit hours)

Previously SEN 954. PHP is one of the best server-side technologies for handling Web content easily and efficiently. PHP is a free, open-source language devoted primarily to handling dynamic web pages and used by millions of sites worldwide. It can be integrated with HTML and handle databases. The course starts with the development environment and the language syntax. It introduces the concepts of OOP in PHP at different levels. It also covers the interactions with HTML web pages and databases. PHP Ajax support is introduced as the advanced topic. Practical examples and sample codes will be given. Upon successful completion of this course, students will gain hands-on experience with PHP syntax and constructs such as variables, arrays, strings, loops, user-defined functions and how to integrate HTML and PHP code to manage and process data.

CSC 540 Computer Graphics (3 credit hours)

Previously SEN 991. Historical development of computer graphics, black and white graphiCS programming, color raster graphics, resolution and memory requirements, look-up tables, vector graphiCS and matrices, surfaces, rotation & scaling, graphiCS primitive, and transformation.

CSC 545 Programming in Go (3 credit hours)

Go, also commonly referred to as golang, is a programming language developed at Google in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. It is a statically-typed language with syntax loosely derived from that of C, adding garbage collection, type safety, some dynamic-typing capabilities, additional built-in types such as variable-length arrays and key-value maps, and a large standard library. Go projects are for networking, distributed functions, or services: APIs, Web servers, minimal frameworks for Web applications, and the rest. In its weekday modality the course is taught over 15 weeks with 2 hours lecture and 1 hour lab per week.

CSC 550 Big Data (3 credit hours)

Previously CS 850. This course will introduce the basic concepts, tools, techniques, and applications. This course will cover the most up-to-date Big Data Technology including Hadoop Distributed File System (HDFS) and MapReduce engine as well as Business Intelligence tools.

CSC 555 Bio Informatics (3 credit hours)

Previously CS 904. This course starts with a brief introduction to molecular biology. It then investigates the main algorithms used in Bioinformatics. After a brief description of commonly used tools, algorithms, and databases in Bioinformatics, the course describes specific tasks that can be completed using combinations of the tools and Databases. The course then focuses on the algorithms behind the most successful tools, such as the local and global sequence alignment packages: BLAST, Smith-Waterman, and the underlying methods used in fragment assembly packages. Lecture topics include Dynamic Programming for pairwise alignment; Hidden Markov Models for pattern recognition, conducting profile-based searches and transmembrane protein structure prediction; phylogenetic tree construction and RNA structure prediction, and the use of SNPs and haplotypes in genomic variation, in pharmacogenomics, in genome-wide association studies and in personalized medicine. The course is self-contained and does not assume any background knowledge in biology, although an interest is molecular biology is helpful. The course will be complemented by hands-on, computer lab sessions that will allow the participants to practice with some of the major tools and databases. Students will solve hands-on problems on HIV, BRCA1 gene, Thalassemia, etc.

CSC 560 Introduction to Data Science (3 credit hours)

Previously CS 960. A practitioner of data science is called a data scientist. Data science leverage all available and relevant data to effectively predict a model that can be easily understood by non-practitioners. A major goal of data science is to make it easier for others to find and coalesce data with greater ease. Data science technologies impact how we access data and conduct research across various domains, including the biological sciences, medical informatics, social sciences and the humanities.

CSC 570 Web Security Fundamentals (3 credit hours)

Previously CS 940. This course introduces students to the fundamentals of computer security as the first step towards learning how to protect computers from hackers. The course begins by explaining the very basic concepts of computer security and provides substantial technical details to keep students interested and involved. It includes hands-on labs and graded and non-graded assignments for each unit that provide an opportunity to practice what the students learn. It also includes a few security games to make learning more exciting and interactive. Students are expected to be familiar with standard computer operations (e.g., login, cut & paste, email attachments, etc.) before enrolling in the course. This course will give students a clear vision on how all seven layers will work in IOS model and different levels of security in each layer.

CSC 580 Computer Algorithms (3 credit hours)

Previously SEN 920. This course will cover algorithm design, sorting, searching, graph algorithms, stacks, queues, and dictionary implementations, divide and conquer algorithms, dynamic programming, randomized algorithms, amortized analysis, lower bound analysis, NP-Completeness.

CSC 605 Principles of Operating Systems (3 credit hours)

Previously SEN 959. This course covers the basic principles of operating system design and implementation. Topics include concurrent processes, inter-process communication, job and process scheduling, deadlock and various other operating systems concepts. Issues in memory management (virtual memory, segmentation, and paging) and auxiliary storage management (file systems, directory structuring, and protection mechanisms) will also be covered.

CSC 610 Compiler Design (3 credit hours)

Previously SEN 953. This course is an introductory course on the design and implementation of compilers. It covers 4 main topics (1)The front end section includes scanning, parsing and context sensitive analysis of the source program; (2) The infrastructure section provides the background knowledge needed to generate intermediate code in the front end, to optimize that code, and to transform it into code for a target machine; (3) The optimization section introduces optimizer, a compiler’s middle section; (4) The code generation section includes instruction selection, instruction scheduling and register allocation.

CSC 618 GUI Development with Java (3 credit hours)

Previously SEN 957. This course teaches the principles of Graphical User Interfaces (GUI) and develops GUIs using Java’s AWT and Swing libraries. Knowledge of and ability to use these libraries is of paramount importance in almost all of today’s software development and is not limited to development of Android Phone applications. The learning and programming of GUIs is most effective and rewarding using these Java libraries, considered by many as the best, simplest and most elegant of all GUI development tools and libraries. (Most Java GUI developers don’t use any visual development tools, since the design and concept of Java’s GUI libraries itself is so natural and easy to understand, that visual development tools become redundant). It teaches the basic principles of graphical user interfaces, the widget hierarchies, event handling mechanisms, event queue management, thread handling etc.

CSC 620 Programming Language Theory (3 credit hours)

Previously CS 923. This course provides an overview of common programming paradigms, including imperative, object-oriented, logic, and functional programming, and discusses the fundamental concepts underlying the design, definition, and implementation of modern computer languages. Students will get practical experience with languages that exemplify a particular paradigm.

CSC 625 Advanced HTML5 (3 credit hours)

Previously CS 885. Students will learn how to use the new HTML5 APIs, including Web Messaging, Web Workers, Geolocation, Drag-and-Drop, and Server-Sent Events.

CSC 630 Information Retrieval (3 credit hours)

Previously CS 870. This course describes the models for information retrieval, techniques for indexing and searching, and algorithms for classification and clustering. Topics include, but are not limited to: SVM, latent semantic indexing, link analysis and ranking, Map-Reduce architecture and Hadoop.

CSC 631 Data Mining (3 credit hours)

Previously CS 831. This course provides an introduction to the theoretical concepts and practical applications of data mining. Data mining facilitates the extraction of hidden predictive information from large complex databases. It is a powerful new technology with enormous potential to help organizations and institutions extract and interpret important information. The course content includes the conceptual framework of data mining, descriptions and examples of standard methods used in data mining. Internet related data mining techniques are also covered. Data processing, statistical modeling, data warehousing and online analytical processing, data conditioning and cleaning, data transformation, text and web mining, mining massive datasets, data stream mining, data mining algorithms, association and correlation, pattern mining, classification, cluster analysis, outlier detection, knowledge discovery, knowledge representation, and validation.

CSC 633 Machine Language (3 credit hours)

Previously CS 933. Machine learning is a fast-moving field with many recent real world commercial applications. The goal of Machine Learning is to build computer model that can produce useful information whether predictions, associations, or classifications. The ultimate goal for many machine learning researchers is to build computing systems that can automatically adapt and learn from their experience. This course will study the theory and practical algorithms in Machine Learning. It reviews what machine learning is about, how it evolved over the past 60 years, why it is important today, basic concepts and paradigms, what key techniques, challenges and tricks. It also cover examples of how machine learning is used/ applied today in the real world, and expose students to some experience in building and using machine learning algorithms. This course will also discuss recent applications of machine learning, such as to robotic control, speech recognition, face recognition, data mining, autonomous navigation, bioinformatics, and text and web data processing.

CSC 640 Advanced Computer Graphics (3 credit hours)

Previously SEN 992. This course gives students hands-on experience and thorough understanding of the most important computer graphiCS principles. It uses Java and its built-in graphiCS capabilities to give the student programming experience in 2D and 3D computer graphics, coordinate transformations, linear 2D and 3D transformations, projections, 3D geometry; color computations, RGB and CMYK color systems, simulation of curved surfaces through Gouraud and Phong shading, hidden surface removal through the Zbuffer technique; also, some animation principles. Introduction to the most important Computer GraphiCS hardware.

CSC 642 Computer Graphics with WebGL (3 credit hours)

Previously SEN 993. HTML5, released in March 2011, brings with it a variety of enhancements, including enhancements to the JavaScript language and powerful 2D and 3D graphiCS capabilities. They consist of a library of function calls of the canvas element’s rendering context that are embedded in JavaScript. Another feature is the use of shaders that are programmable portions of the rendering pipeline. These must be programmed in the OpenGL shading language.

CSC 650 Big Data Analytics (CPO-SAS/SPSS) (3 credit hours)

Previously CS 855. This course emphasizes the key aspects of data analytics for students intending to pursue certain professional certification, i.e., SPSS or SAS, upon the completion of the course. The first module introduces the fundamental statistical thinking to the computer scientist, including probability, random variables, and statistical inference. Then, predictive modeling techniques, such as linear and logistic regression, are covered to make transition to the supervised and unsupervised data mining techniques. In the last module of the course, some popular big data platforms, namely, Hadoop/Mahout and Spark/MLlib, are discussed from the data analytics point of view. Examples from the text and social media mining application are covered in the second and the third module. The commercial software (student version) is required and used through the first and second modules, such that the students can be fluent in the application to meet the certification requirement thus limited programming requirement.

CSC 660 Advanced Data Science (3 credit hours)

Previously CS 961. This course builds on Introduction to Data Science by introducing the idea of data products and encouraging students to build products base on data analyses.

CSC 670 Network & Data Security (3 credit hours)

Previously CS 901. The course covers theory and practice of the security aspects of the web and Internet. It surveys cryptographic tools used to provide security, such as shared key encryption (DES, 3DES, RC-4/5/6, etc.); public key encryption, key exchange, and digital signature (Diffie-Hellmann, RSA, DSS, etc.). It then reviews how these tools are utilized in the internet protocols and applications such as SSL/TLS, IPSEC, Kerberos, PGP, S/MIME, SET, and others (including wireless). System security issues, such as viruses, intrusion, and firewalls, will also be covered.

CSC 680 Advanced Computer Algorithms (3 credit hours)

Previously CS 950. This course covers advanced methods of algorithmic design, analysis, and implementation. Techniques to be covered include amortization, randomization, network flow, linear programming, approximation algorithms, computational complexity, and NP completeness analysis. Domains include FFT, number theoretical algorithms, RSA encryption – decryption, various breaking attempts (factorization), primality checking, Diffie-Hellman key exchange, ElGamal encryption, algebra-based encryptions such as AES, cryptographic hash functions, pattern matching, and bioinformatics.

CSC 682 Graph Algorithms (3 credit hours)

Previously SEN 921. This course provides an introduction to mathematical modeling of computational problems and the design and analysis of the graph algorithms that solve these problems in practice. It covers the common graph algorithms, algorithmic paradigms, and data structures used to solve these problems. The course emphasizes the connection between graph models and the engineering problems solved by graph algorithms. It also illustrates how to synthesize new graph algorithms and algorithms employing graph computations as key components and analyze them. Several of the methods discussed in the course are of great practical use within areas such as transportation, network design, scheduling, and job assignments.

CSC 688 Special Topics (1-3 credit hours)

Special topics courses cover subjects not currently contained in the curriculum, but are designed to address especially relevant trends or developments related to the discipline.

CSC 689 Independent Study (1-3 credit hours)

Independent Study allows students to explore academic areas of special interest not provided in the existing curriculum. It is carried out under the guidance of a member of the faculty.

CSC 690 Capstone Project (3 credit hours)

A capstone is the summative component of the master’s degree program submitted by a graduate student. The Capstone Project is designed to demonstrate the in-depth learning and higher-order thinking of the student. It is meant to be an analysis of knowledge, breaking the information down into its component parts, and also the synthesis of new knowledge, assembling the parts into a new coherent whole. The capstone is also meant to be practical and useful. The student should choose an area that is uniquely and personally important and research or perform a project in that area. The Capstone Project is performed by arrangement with the project advisor. The student must conduct independent research in an approved topic in software engineering, prepare a report and defend it before a faculty advisor.

CSC 695 Master’s Thesis (6 credit hours)

Previously SEN 999. The master’s thesis must be arranged with the capstone thesis advisor. After the topic is approved independent research in computer science toward the MS degree must be conducted. The research must result in some new insights into the academic or practical concepts of the CS world. These must be analyzed, explained, and documented in the thesis. After completing the thesis the student must defend it before a committee of faculty appointed by the department chair.

CSC 720 Formal Methods (3 credit hours)

This course will focus on fundamental mathematical models of computation. It will discuss both the inherent capabilities and limitations of these computational models as well as their relationships with formal languages. Rigorous arguments and proofs of correctness will be emphasized. Particular topics to be covered include: (1) Finite automata, regular languages, and regular grammars. (2) Deterministic and nondeterministic computations on various automata. (3) Context free grammars, languages, and pushdown-automata. (4) Turing machines, Church’s thesis, and undecidable problems.

CSC 730 Cryptography & Cryptanalysis (3 credit hours)

Previously CS 979. This course analyzes ways to protect information during transfer in computer systems and networks. It includes the mathematics of cryptography, Number theoretical concepts, RSA theory, Diffie-Hellman key exchange, ElGamal Discrete Logarithm and their application and use in distributed systems, secure internet services, digital signature, intrusion detection and firewalls; coding based encryption; post-quantum cryptography. Some factoring methods to be studied include Fermat, Pollard Rho, and Elliptic Functions.

CSC 750 Coding Theory (3 credit hours)

Previously CS 910. This class gives an introduction to coding theory. This course introduces examples for codes (ISBN, UPC, etc.) including binary codes, the meaning of important code parameters, detecting errors, correcting errors, sphere packing bound, and binary linear codes. Abstract algebra: fields and vector spaces, polynomial extensions of GF(2). Encoding linear codes: Introduction to generator matrices and parity check matrices, Hamming codes. Linear Algebra over GF(2), nullspace of a matrix, relation between generator and parity matrix. Error correcting codes, cyclic codes (BCH and Reed-Solomon codes), Goppa codes; syndrome decoding, the Patterson Algorithm.

CSC 760 Advanced Topics in Data Science (3 credit hours)

Due to so many areas in the advanced level of data science, the expert-level instructor decides the specific area(s) for the deep dive.

ICS 501 Introduction to Cybersecurity (3 credit hours)

Overview of the field of Cybersecurity: history and basics of cryptography, risk and data management, fundamental concepts, preventative measures, rules, regulations and legal issues, security testing and assessment, identity and access management, database security, computer ethics, digital signatures.

ICS 520 Personal Computer Security (3 credit hours)

Beginner’s computer security course for small office or home users. Learn to stop hackers, worms, viruses, spyware, web bugs and identity theft. Learn vulnerabilities found in web browsers, email and operating systems. Protect against online purchase dangers, install firewalls, manage cookies, restrict ports, analyze log files, evaluate wireless networks and examine encryption.

SWE 500 Software Engineering (3 credit hours)

Previously SEN 941. In this class, students will learn the elements of engineering and the relationship of engineering to software practice. It also covers how those principles and practices apply to the design, development, and maintenance of software throughout the entire software lifecycle. The course introduces traditional and contemporary approaches to software engineering practice. These include: requirements development, architecture and detailed design, modeling, testing strategies, process selection, project management, how to interact with other engineers on large-scale systems, and more. This course includes a capstone team where students gain practical experience designing a software system from start to finish using software modeling techniques such as UML, as well as a variety of project management methods and tools. This is not a programming course, but a background in object-oriented programming (OOP) will be valuable in helping the student understand the demands of the capstone project.

SWE 510 Information Security Countermeasures (3 credit hours)

Previously CS 810. This course covers Cyber Ethics, Basic Network Terminologies, Information Gathering & Footprinting, various attach methods like Trojans, Backdoors, Viruses & Worms, Phishing & its Prevention; System Hacking & Security, Cryptography – the most important methods without going into mathematical details, Google Hacking, Secure Coding Practices, Firewalls, IDS, Evading IDS, Wireless Hacking & Security, Bluetooth Hacking; Introduction to Cyber Crime Investigation & IT ACT 2000, Investigation Methodologies & Case Studies, Cyber Forensics.

SWE 518 UI Design & Implementation (3 credit hours)

Previously SEN 948. This course introduces the principles of user interface development and the iteration of design-implementation-evaluation. It will study the important design principles to design good UI. Students will see different techniques for prototyping user interfaces and learn techniques for evaluating and measuring usability.

SWE 520 Principles of Ethical Hacking (3 credit hours)

Previously CS 820. In this course students will learn and practice hacking techniques used by malicious, black-hat hackers as a means to learn best defense from these same hackers. The course is an in-depth study using hands-on lab exercises. While these hacking skills can be used for malicious purposes, this course teaches you how to use the same hacking techniques to perform a white-hat, ethical hack, on your organization. The course trains for the CEH (Certified Ethical Hacker Certificate). Students will be trained to penetrate, test and hack their employers’ own computer system in order to safeguard it from real (malicious) hackers. The Ethical Hacker is a trustworthy employee of an organization trained to attempt to penetrate networks and/or computer systems by using the same methods and techniques as a malicious hacker. Through this the individual can learn and master the malicious hackers methods find the weak points in an organization’s network or computer systems and build safeguards against hacking attempts. The CEH is the most desired information security training program for any IT security professional.

SWE 525 Version Control Tools/git (3 credit hours)

This course is designed to make the participants experts in git tool. It starts with fundamental concepts like git branch and continues to advanced topics like design and git work flow. The course covers different components of git and github and how they are used in software development operations. The course also covers Installation & Configuration of github and other tools and techniques like github desktop, SourceTree and Sparkle share as well. Participants will also get to implement one project towards the end of the course. Companies use git for creating and managing open source API’s and to help the open source community. It is github, a git repository hosting service founded just a few years ago to build software better, together. Most of the high paying companies are using git and github for their new, innovative and upcoming Software Languages. Open source software can now be made using github and you will be able to share your repositories with other developers so that they can also contribute. github concepts can be implemented in Big Data and Hadoop technology, Java Projects and other frameworks as well. Some of the trending repositories in github are Scala and AngularJS.

SWE 530 Cloud Computing Security (3 credit hours)

Previously CS 830. This class provides students a comprehensive understanding cloud security fundamentals and advanced expertise in cloud environments. Starting with a detailed description of cloud computing, the course covers all major domains in the latest Guidance document from the Cloud Security Alliance, and the recommendations from the European Network and Information Security Agency (ENISA) with expanded material and extensive hands-on activities. Students will learn to apply their knowledge as they perform a series of exercises as they complete a scenario bringing a fictional organization securely into the cloud.

SWE 535 Cloud and Virtualization Security(IPO) (3 credit hours)

Previously CS 840. This course introduces the concepts and techniques of implementing and securing cloud computing through the use of virtualization and distributed data processing and storage. Topics include operating system virtualization, distributed network storage, distributed computing, cloud models (IAAS, PAAS and SAAS) and techniques for securing cloud and virtual systems. Practical experience of integrating private, public, and hybrid clouds and virtual servers securely into an existing IT infrastructure will also be covered.

SWE 540 SQA/Manual Testing (3 credit hours)

Previously SEN 760. This course is a comprehensive introduction to Software Testing and Quality Assurance. The following topics will be taught: Software Development Methodologies, The Role of Quality Assurance in a Software Development Life Cycle, Common Software Testing Life Cycles, Software Testing Types and Definitions, Test Planning, Test Design, Test Cases Development, Test Execution & Results Analysis, and Test Matrices.

SWE 542 SQA/Manual/Auto/Perf Testing (3 credit hours)

Previously SEN 860. Testing of software can be done in both Automation and Manual testing method, but it totally depends on the project requirement, budget associated with the project, and which testing method will be benefited to the project. Automation Testing is a method which uses automation tools to run tests that repeat predefined actions, matches the developed program’s probable and real results. Manual testing is a method used by software developers to run tests manually. This course will teach the following: Software testing concepts; Black Box Testing, White Box Testing, Integration Testing, System Testing, Unit Testing, and Acceptance Testing; and Test Management tools: QC/ALM, Defect tracking tool, Jira and automation tool, and QTP/Selenium.

SWE 544 SQA/Software Testing Tools (3 credit hours)

Previously SEN 930. This course introduces the QA with test methodologies and procedures. During the course, the students go through the Manual Testing and Automation of Client/server and web based applications. The course will quickly build through each of these concepts and configuration so that by the final day of class, each student will have fully tested the application manually and convert manual test cases into automation scripts. In doing so, the students will focus on different aspects and become acquainted with additional functions.

SWE 546 SQA/Performance Testing (3 credit hours)

Previously SEN 960. This course provides an introduction to the complexities of software performance testing and delivers testing skills that participants can immediately apply back on the job. The following topics will be addressed: understand the performance testing process: planning, preparation, execution, and reporting; relate performance testing to the development process; understand performance goals and objectives; learn how to deal with environment and architecture issues; define operational profiles and load definitions; understand and select the various types of performance tests; and define and select appropriate measurements.

SWE 560 Principle of Database Systems (3 credit hours)

Previously SEN 934. This is an advance level course on the principles of database systems. Main topics include, but are not limited to: an overview of the relational data model and relational query languages; recursive queries, datalog, and fixed-points; query processing and optimization; database design, dependencies, normal forms, and the chase procedure. Additional topics may include: information integration, complex objects, semistructured data, and XML.

SWE 561 Cloud Computing (3 credit hours)

Previously SEN 961. Introduction to cloud computing, cloud architecture and service models, the economics and benefits of cloud computing, horizontal/vertical scaling, thin client, multimedia content distribution, multiprocessor and virtualization, distributed storage, security and federation / presence/ identity/ privacy in cloud computing, disaster recovery, free cloud services and open source software, and example commercial cloud services.

SWE 562 Oracle Database Management/Administration (3 credit hours)

Previously SEN 982. This course introduces Oracle as a practical example of a widely used database system, teaches basic database concepts, data definition and manipulation languages (SQL), general architecture of database management systems, transaction management, concurrency control, security, distribution, and query optimization.

SWE 600 Advanced Software Engineering (3 credit hours)

Previously SEN 942. This class goes into greater depth in learning the practices and principles of software engineering. The course also includes a brief review of some of the material from Software Engineering. In this course, we expand our understanding of software modeling to include realtime, concurrency, and embedded systems software engineering. It also goes into more depth in software metrics, project estimation techniques, risk management, software reliability, new and emerging directions for software development. This is also a team-oriented capstone project course, and one of the deliverables at the end of the semester is a fully-formed, professional level software design from the project team.

SWE 602 Software Requirements Elicitation (3 credit hours)

Previously SEN 946. Requirements Elicitation is the process of identifying the real problems that the software stakeholder tries to solve, of defining a system and its technical environment, and of identifying the requirements of that system such that it solves these problems for users, customers and other stakeholders. The objective of the class is to prepare software engineers for the task of developing effective requirements under a variety of development modalities. The student, at the conclusion of this course, will understand requirements engineering for Waterfall, V-Model, Spiral Model, Agile Methods, Cleanroom Engineering, the [Rational] Unified Process, as well as other approaches. The student will also understand, and gain experience with, the Unified Modeling Language, including use cases and other facilities of UML. Finally, it will introduce the student to the concepts necessary to moving from requirements to architecture, to design, to implementation. This is not a design or programming course, but an understanding of the principles and practices of software engineering are essential for the software requirements engineer.

SWE 610 Ruby on Rails (3 credit hours)

Previously SEN 905. This course offers a comprehensive introduction to Ruby on Rails, an open source web application framework for the Ruby Programming language.

SWE 615 Angular JS (3 credit hours)

Previously CS 936. AngularJS provides a layer on top of JQuery and DOM, reduces boilerplate code and improves maintainability. The best use of AngularJS is the consistent manner in which a new developer can generate the code for the structure and the layout. Once the structure is ready, the developer can concentrate more on look and feel rather than routine boiler plate code and cruft. The chapters covered include Introduction, Directives and Controllers, Unit Testing, Forms, Input and Services, Server Side communication using http.

SWE 620 Scala Programming (3 credit hours)

Previously CS 925. This course is an introduction to software programming using Scala, a programming language evolved from Java. The main advantage of Scala is its versatility. It has combined features of scripting language, objective oriented language and functional programming language. The last feature is particularly useful in Web and multicore applications that require concurrent data processing. Scala has been adopted by some leading high-tech companies. For example, in 2009, Twitter announced that it had switched large portions of its backend from Ruby to Scala and intended to convert the rest. To make learning easier, we will first introduce scala as a scripting language. We will then describe its objected oriented features (including class, object, inheritance, polymorphism, etc.) and finally move on to its main functional programming features (including currying, pattern matching, lazy evaluation, tail recursion, immutability, etc.).

SWE 632 Software Risk Management (3 credit hours)

Previously SEN 943. This course introduces the field of software risk management which includes the software estimation, planning and control process. Risk management in software includes critical factors that impact estimates, methods for selecting metrics and measures, proper software sizing, as well as processes that identify and manage risks in the software development process as well as the operational phase of the software life cycle. Risk management and software estimation and measurement, when used properly in the software engineering context expedite the software estimation process, help generate more accurate estimates, and contribute to safe and resilient software engineering projects. Risk techniques also mitigate safety and security issues and form a total software success paradigm for software development projects.

SWE 633 Software Refactoring (3 credit hours)

Previously SEN 944. Software Refactoring is a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior (Fowler 1999). Improving the design of existing code. Various techniques and refactoring patterns. Increasing software understandability and productivity, reducing software complexity, aging, and maintenance costs. Refactoring in the context of agile development, during debugging and code review. Refactoring tools for important languages and OSs. Various categories of refactoring, small and big refactoring. Refactoring of UML design models.

SWE 640 Artificial Intelligence (3 credit hours)

Previously SEN 985. This course introduces the foundation of simulating or creating intelligence from a computational point of view. It covers the techniques of reduction, reasoning, problem solving, knowledge representation, and machine learning. In addition, it covers applications of decision trees, neural networks, support vector machines and other learning paradigms.

SWE 680 Software Architecture (3 credit hours)

Previously SEN 950. Every computer software system has an architecture, even if it is an ad hoc architecture. Modern software systems are larger, include more interoperability of their components, and often involve many programmers and engineers, working together to achieve a predictable design. When there is no coherent architecture for the design, the engineers and programmers often find themselves working at cross-purposes, constantly reworking their product to satisfy previously undefined requirements. This class is focused on the high-level concern of the architecture of a software system. Therefore, we will not be doing any computer programming. The course interests will include the requirements development, system context, and relationships between the various components and structures in a software architecture. At the end of this course students will be prepared to participate in a software (or systems) engineering project at the high level of development where they design the fundamental architecture for that system. Students will understand requirements development, project strategies and tactics, patterns of architecture, and architectural styles and idioms.

SWE 688 Special Topics (1-3 credit hours)

Special topics courses cover subjects not currently contained in the curriculum, but are designed to address especially relevant trends or developments related to the discipline.

SWE 689 Independent Study (1 credit hours)

Independent Study allows students to explore academic areas of special interest not provided in the existing curriculum. It is carried out under the guidance of a member of the faculty.

SWE 690 Capstone Project (3 credit hours)

Previously SEN 998. A capstone is the summative component of the master’s degree program submitted by a graduate student. The Capstone Project is designed to demonstrate the in-depth learning and higher-order thinking of the student. It is meant to be an analysis of knowledge, breaking the information down into its component parts, and also the synthesis of new knowledge, assembling the parts into a new coherent whole. The capstone is also meant to be practical and useful. The student should choose an area that is uniquely and personally important and research or perform a project in that area. The Capstone Project is performed by arrangement with the project advisor. The student must conduct independent research in an approved topic in software engineering, prepare a report and defend it before a faculty advisor.

SWE 695 Capstone Thesis (6 credit hours)

Previously SEN 999. The master’s thesis must be arranged with the master’s thesis advisor. After the topic is approved independent research in software engineering toward the MS degree must be conducted. The research must result in some new insights into the academic or practical concepts of the SE world. These must be analyzed, explained, and documented in the thesis. After completing the thesis the student must defend it before a committee of faculty appointed by the department chair.

Last modified: July 20, 2017