Courses that will be offered are listed in the table below. IT501 which will be offered in the Fall semester is a non-credit and an introductory course to "Programming in Java". An assesment test will be conducted in the first week of classes. Those who receive a passing score will be exempt from attending the course but are welcome to sit in if they choose to do so. The objective of this introductory course is to provide students who have little or no programming experience with algorithmic thinking and basic programming skills.

First day of classes for the Academic Year of 2022-2023: October 2022

Semester I: Fall

Kodu Adı Kredisi
IT 501
Introduction to Computer Programming

This is the first course in our series of programming courses which aims at introducing the students to fundamentals of computer programming in Java. Students will learn algorithmic thinking along with the basic concepts of coding such as data types, control structures, objects, arrays and functions.

IT 511
Fundamentals of Data Communications and TCP/IP Networking

The first part of the course gives the students an overview of data communication and networking. Basic concepts associated with data transmission and data communication techniques are presented to introduce students to communication. The second part of IT 511 provides students with an in-depth knowledge of the internal workings of different protocols in the TCP/IP protocol suite and how they are configured in the Linux and Windows NT environment. Topics include Networking Overview; Data Communication Techniques; Switching Concepts; OSI Reference Model and Layers; TCP/IP Protocol Suite and Services; TCP/IP Internetworking; IP Routing; TCP/IP Network Setup and Troubleshooting; Network Applications using SMTP, FTP, HTTP, DNS, DHCP and WINS.

IT 524
Programming with Java

This is a hands-on course on the Java programming language using the Java Development Kit (JDK), and the use of Java to reinforce the use of object-oriented approach to solve real problems. A general understanding of object- oriented programming concepts is also presented. IT 524 covers more advanced features of the Java Foundation Classes (JFC), distributed programming using the Remote Method Invocation (RMI), CORBA, and the Java Native Interface (JNI) for interfacing Java programs with applications written using some other language such as C, as well as Java security. Topics include Java and Object- Oriented Programming; Language Basics; Java Classes and Objects; Java Statements; Exceptions; Java Threads; Swing Programming; Java Packages; Java File I/O; Distributed Applications; Persistence and Remote Method Invocation; Database Connectivity (JDBC); Java Native Interface; Java Security Model.

IT 553
Database Design, Management and Administration

This course gives students hands-on practice and experience in database design and administration along with the fundamental concepts and techniques involved. Topics covered include the entity-relationship model, relational database theory, file structure, indexing and hashing, query processing, crash recovery, concurrency control/transaction processing security and integrity. Creation of tables, views, synonyms and indexes are examined in detail. The use of SQL is considered and highlighted with the help of examples, and used to build the underlining database of an application. Topics include Introduction to RDMS; Database Creation and Modification; SQL; Event Programming; Multiple Module Applications; Database Architecture; Hardware Configuration and Consideration; Database Layouts; Database Management; Managing Rollback Segments; Database Tuning; Database Security and Auditing; Backup and Recovery Procedures.


Semester II: Spring

Kodu Adı Kredisi
IT 526
Enterprise Java Frameworks and Design Patterns (elective)

This is a hands-on course which consists of two main parts. In the first part, commonly used enterprise Java frameworks are presented. These frameworks include Java Server Faces (JSF), SpringMVC and Struts as MVC Frameworks; and Java Persistence API and Hibernate as Object Relational Mapping (ORM) Frameworks. In the second part, the software design patterns which will be needed during software design and implementation process are introduced. These design patterns are presented as Creational Patterns, Structural Patterns and Behavioral Patterns.

IT 535
Mobile Programming (elective)

This introductory course will provide an insight to the leading edge world of applications running on mobile devices via wireless networks. The course will start by giving an overview about the evolution of the wireless technologies along with some of the core concepts employed in mobile communications. Students shall use simulation software to design and debug wireless Web applications developed using WML (Wireless Markup Language), WMLScript, and Java 2 Micro Edition (J2ME).

IT 541
Introduction to Machine Learning (elective)

Data Science is the study of extracting information from data. Addressing the needs of the industry requires skills in data processing and data analytics spanning a wide area of subjects ranging from Statistics to Machine Learning. This course will introduce some of the basic concepts, techniques and tools that are required to solve problems widely seen in data analytics. The course will start with a short review on inferential Statistics and exploratory data analysis. The focus in the study of these subjects will be on breadth, rather than depth, and practical examples will be used in applications of classification and clustering techniques to a wide variety of problems in predictive data analytics.

IT 543
Applied Programming in Python (elective)

This is an introductory hands-on course on Python programming language. We’ll cover the basic building blocks of the language including variables, data structures, loops, conditional structures, functions, and file manipulation. This course is designed to provide you with the ability to work with the data in a variety of tasks ranging from data pre-processing to data visualization and statistical data analysis by employing powerful libraries of Python such as Numpy, Scipy, Pandas, Matplotlib, and Seaborn. The exercises chosen to teach the concepts throughout the course are expected to provide a reference for an introduction to Data Science.

IT 563
Agile Project Management Methodology (elective)

Agile project management is as radically different from traditional project management as agile processes are different from traditional methodologies. Rather than plan, instruct and direct, the agile project manager facilitates, coaches and serves. In the Scrum Agile practice this person is called a ScrumMaster- Agile project manager. In this course participants learn what an agile software project is, how to manage project risks and issues, and how to guide the development team and an organization into Agile practice by fostering the adoption of new attitudes, collaborative processes and working to remove institutional barriers. Exercises, case studies, and examples are used to assist participants to develop the knowledge, skills, capabilities.

IT 542
Big Data Processing Using Hadoop (elective)

This course will provide the essential background to start to develop programs that will run on Hadoop Distributed File System (HDFS). The course will also show the students the limitations of traditional programming techniques and how Hadoop addresses these problems. After learning the basics of a Hadoop Cluster and Hadoop Ecosystem, students will learn to write programs using Apache Spark framework and run these programs on a Hadoop Cluster.

IT 537
Front-end Web Development (elective)

The aim of the course is giving students the skills and the perspective for coding interactive and responsive user interfaces for web and mobile apps. Students will be learning and exercising the three common coding languages HTML, CSS and Javascript to gain a working knowledge of how web sites and mobile interfaces are developed and optimized best to meet the needs of clients.

IT 538
Software Testing (elective)

Briefly, software testing is a process of executing a program with the goal of finding errors. Through testing, one inspects behavior of a program on a finite set of test cases (a set of inputs, execution preconditions, and expected outcomes developed for a particular objective). To assure the quality of the project, testing must be considered and executed on all phases of Software Development Life Cycle. This is a critical task for all parties involved in the software project team including analysts, developers and testers. In this course, we will introduce all types of tests in different phases of SDLC such as, unit testing, functional and integrational testing, performance tests, user acceptance tests and adhoc testing. We will examine white box and black box testing formats along with test management formats and reporting. Automation tests and conditions will also be examined within the scope if this course. All lectures will be supported with practical examples and workshops.

IT 513
Systems and Network Security (elective)

This course deals with security issues in a networked environment and the Internet, and with a guide to obtaining freely available security tools and references. It points out the inadequacies of existing products in keeping out intruders, and enables participants to better estimate their own security requirements, risks, and advantages. These include the World Wide Web security, proxy programs, integrity management tools, secure programming, and how to use secure TCP/IP services. It also covers security issues on passwords, filesystem, cryptography, backups, logging, firewalls, virtual private networks, proactive security strategies and policies, physical security and dealing with break-ins.

IT 566
IT Governance (elective)

This course is designed to give students a broad Managerial Perspective; a CIO's or IT Manager's approach to an IT Organization. With a Quality based approach to an IT Organization first; then its resources, its processes and all the requirements expected from such an organization afterwards; the students will learn how to look at the IT Organization as a whole and how to place any IT Process to fit into the Organizational Structure. This will give the expertise and diagnosis of how and where each process takes place within the organization. The course also aims at equipping the student with Global Best Practices, IT Governance, Control and Security Standards, various methodologies and professional real-life know-how and experience. Another dimension of this course is to ensure that technical people are well equipped with social & managerial skills, which will add them value in understanding the world of business. Students will learn how Business-IT Alignment is to be achieved, how technical people should deal with business issues & how IT investments in an organization need to be controlled. At the completion of the course; the students are expected to have a unique understanding of control oriented business & technology partnership.

IT 592
Term Project

All graduate students pursuing a non-thesis MSc. Program are required to complete a project. The project topic and contents are based on the interest and background of the student and are approved by the faculty member serving as the Project Supervisor. At the completion of the project,the student is required to submit a final report and present the project. The final report is to be approved by the Project Supervisor.


Courses offered in the past

Kodu Adı Kredisi
IT 512
Enterprise System Analysis and Integration

This course will cover various aspects of network components, network design, capacity planning, network management, system integration, Internet/Extranet/Intranet services, system and network troubleshooting. Topics include Network Topologies and Standards; Transmission Media and Structured Wiring; Network Operating Systems; Network Design and Implementation; Network Management and Troubleshooting; Local Area Networks, Wide Area Networks; WAN Applications and Technologies; WAN Equipment; Hands-on Internet/Intranet Services.

IT 519
Introduction to Programming using C#

The objective of this course is to introduce participants to programming and problem solving with the help of an object-oriented programming language C#, which is the official language of Microsoft .NET platform. The course will cover many C# features in detail as needed as well as developing an algorithmic way of thinking irrespective of the programming language used. During this course, participants will learn the fundamental skills that are required to design and develop object-oriented applications.

IT 520
Linux Programming Environment

The first part of this hands-on course introduces the student to everyday use of the Linux operating system. Advanced working knowledge of Linux, writing Bourne Shell scripts to automate programming tasks, and use of the awk filter are also introduced. The second part of IT 520 helps students understand the principles of software engineering and its application in writing modular C programs. Topics include Introduction to Linux Operating System and the Syntax; Linux File System; On-line Help Facility; Text Editing; Linux Network Communication; Graphical Interfaces to Linux; Shell Concept; Bourne Shell Programming; Awk; Introduction to C; Variables and Constants; Structures; Numeric Data Types; Separate Compilation and Linking; Dynamic Memory Allocation; Disc Files and other I/O.

IT 521
Object-oriented Programming with C++

Starting with a conceptual model of the UML, the course This course provides a tutorial to the core aspects of the language in a format designed to facilitate learning. This course will help students understand the principles of software engineering and its application in writing modular C++ programs for large-scale projects. It teaches students the essential topics of C++ such as encapsulation, inheritance, polymorphism, and overloading, and points out key programming techniques and strategies of converting existing C code to C++. Topics include Object-Oriented Analysis; C++ Classes; Memory Allocation; Overloading; Inheritance; Exception; Manipulators and Templates; Separate Compilation and Linking.

IT 522
Advanced Programming with Visual C++

This course familiarizes students with graphical user interface (GUI) programming in the Windows NT/2000 environment using Visual C++ and the Microsoft Foundation Classes (MFC) library. IT 522 equips software developers with the essential knowledge of how to debug and profile Windows programs and covers the latest features of Visual C++ and Windows NT/2000 graphical components, such as tree views and rich edit controls. Topics required to build advanced applications using the latest ActiveX technology, database access using both ODBC and Data Access Objects (DAO) are also covered. Topics include VC++ Development Environment; C++ and Object-Oriented Programming; MFC Programming; Event Handling; Document-view Architecture; Creating Windows Help System; OLE and COM Basics; Creating and Customizing OLE Servers; ActiveX Concepts; ActiveX Template Library; MFC ControlWizard; Database Access.

IT 525
Advanced Java Programming

This course is designed to teach programmers the advanced aspects of Java programming language and how it is applied to a wide range of applications. The course covers advanced Java Programming topics including streams and file I/O, multithreading, recursion, sorting and searching, network programming and networked applications, socket classes, introduction to RMI (Remote Method Invocation), working with Java databases, Java Database Connectivity (JDBC), introduction to JavaBeans, creating JavaBeans and handling events using JavaBeans, Servlets, JSP, Java development practices and Java security.

IT 528
Developing .NET Applications with C#

C# programming language - .NET Framework with object-oriented analysis and design. Developing ASP.NET applications and XML Web Services using C# programming language.

IT 529
Object-oriented Analysis and Design using UML

This objective of this course is to provide the basics of object-oriented software engineering including object-oriented analysis and design using UML. Course includes: Fundamental concepts of software design & UML (Unified Modeling Language), Requirement analysis, UML notations, Use case diagrams, Class diagrams and Case studies.

IT 530
Advanced Web Programming

This course provides a formal introduction to Web application development and Web-enabled technologies. It also provides a grand tour of the technologies used on the client and server side to support user web interfaces This course, in short, provides the student with the skills needed to build professional web applications with interfaces to different types of databases. Programming, which is needed to interface the web pages with CGI and interface with database through ODBC, is usually done with interpreted languages like Perl, PHP, Python, etc. as compiled languages are already taught in other classes. This course also introduces the students to other methods of interfacing with a database, including Active Server Pages (ASP) and Java Server Pages. It finally summarizes the the competing technologies supporting distributed computing, COM/DCOM from Microsoft and Open Standard CORBA. Comparison between different technologies is essential to choosing the right solution for the business environment that is built.

IT 531
Building Web Applications using ASP.NET and AJAX Framework

In this course, students will learn building web applications using ASP.NET, AJAX library and AJAX control toolkit in the .NET Framework. Students will learn how to apply already known web technologies like JavaScript and CSS to their ASP.NET web applications and how to deploy web applications on the IIS (Internet Information Services) server. Students will also learn about web services in .NET by using C# as the programming language.

IT 532
Web Technologies for Application Developers

This course is designed to give students web development experience and teach them current technologies that are used developing web applications. At the completion of the course; the students are expected to have the knowledge of basic web concepts like HTML, CSS, JavaScript and advanced web concepts like XML, XML Processing techniques, XSLT for XML Transformation, DOM (Document Object Model), AJAX (Asynchronous JavaScript and XML), AJAX Frameworks, Web Services, Web Services protocol, RSS and Mashups as well. The students are also expected to use these technologies while developing web applications.

IT 533
Web Programming using ASP.NET

The objective of this course is to introduce participants to web programming using the Microsoft ASP.NET technology. The participants will learn how to build web applications on the Microsoft .NET platform and will also learn how to deploy these web applications on the Microsoft IIS (Internet Information Server). The programming language that will be used is C#, hence the participants are expected to have taken the IT519 course.

IT 534
Real-time Systems

Real Time system development requires special design techniques, language and operating system primitives to deal with the time critical nature of such systems. IT 534 introduces real time design techniques such as MASCOT and Petri-Nets that can deal with multi-tasking, mutual exclusion, task synchronization and scheduling problems. Special language constructs such as exception handling, concurrency, interrupt and device handling and also operating system support for task communication and cooperation are examined with practical examples. Topics include: Introduction to Real Time Systems; Design of Real Time Systems; Development Methodology; Design Analysis; Language and Operating System Support.

IT 536
Developing Mobile Applications using the .NET Framework

The goal of this course is to provide developers with the knowledge and skills to develop mobile enterprise solutions by using the Smart Device Extensions for Microsoft Visual Studio .NET and the Microsoft .NET Compact Framework. This course is intended for experienced, professional software developers who work in corporate enterprise development teams and independent software vendors. Most students will be Microsoft Visual Basic .NET, Microsoft Visual C#, or Java developers. These developers want to build end-to-end solutions in an enterprise environment that includes mobile devices as part of the environment. Course module include: Introduction to Visual C#; Introduction to Mobile Device Application Development; Working with the User Interface; Working with Local Data; Accessing Remote Data; Synchronizing Data with SQL Server CE; Deploying Mobile Applications.

IT 539
Secure Software Coding

The goal of this course is to provide developers with the principles and best practices for writing secure code and stopping malicious hackers in their tracks. The contents of the course reveal proven principles, strategies, and coding techniques. Numerous examples will be given to the students used in an effort to find solution to the industry's toughest security problems by providing sample code in several languages. This course will also cover information about threat modeling, designing a security process, international issues, file-system issues, adding privacy to applications, and performing security code reviews. It also includes enhanced coverage of buffer overruns, Microsoft .NET security and Microsoft ActiveX development, plus practical checklist for developers, testers, and program managers. Course includes: The Need for Secure Systems; The Proactive Security Development Process: Security Principles to Live By; Threat Modeling; The Buffer Overrun: Determining Appropriate Access Control; Running with Least Privilege; Cryptographic Foibles; Protecting Secret Data; Database Input Issues; Web-Specific Input Issues; Internationalization Issues; Protecting Against Denial of Service Attacks; Writing Secure .NET Code; Performing a Security Code Review; General Good Practices.

IT 540
Social Network Analysis (elective)

Different types of social networks and connectivity are a crucial part of the underlying models of the new generation of applications we use. These connections include people, places, activities, businesses, products, social and integrated business processes happening in personal and business networks or communities.
In this course we will study different applications such as Facebook, Twitter, Linkedin and Foursquare, and discover different networks formed by the connectivity. We will introduce tools that will give us insight into how these networks function: We will introduce fundamentals of graph theory and discover how these graphs can be modeled and analyzed (Social Network Analysis). We will also study the interaction dynamics using game theory.
Networks are a source of massive amounts of data. The volume of data may be too large for comprehensive analysis, and the range of potential correlations and relationships between different sources of information. Machine learning is ideal for exploiting the opportunities hidden in big data. It delivers on the promise of extracting value from big and disparate data sources with far less reliance on human direction. It is data driven and runs at machine scale.
Learning objectives are: 1. Study different social applications and how they can be modeled, 2. Understand the basics of graph theory, 3. Understand and perform basic social network analysis, 4. Understand the basics of game theory, 5. Apply these concepts to model the Web and new social applications, 6. Understand fundamental concepts of machine learning, 7. Use open source machine learning frameworks and cloud services to study big data.

IT 560
Software Engineering

This course introduces the participants to IT Project Management and Software Quality Assurance concepts. IT 560 begins with an overview of Project Lifecyles and Phasing in IT Project Management. Project Initiation, Estimation, Software Metrics and Quality Review issues are examined and highlighted with the help of examples. Software tools are used to enforce the concepts using a realistic IT Project as a case study. Software metrics and testing techniques are further emphasized to provide the necessary background to ensure software quality during the development and delivery phases of a software project. Topics include: Project Lifecycles And Phasing; Project Viability; Waterfall Approach; Project Initiation; Estimating and Metrics; Project Management Tools; Software Quality; Quality Assurance Plan; Software Quality Factors; Program Complexity Metrics and Testing Practices.

IT 561
Fundamentals of Software Development Life Cycles and Software Process Improvement

This course provides an opportunity to learn issues involved in Software Development Life Cycles and Software Process Improvement and give the participants an overview of both concepts. The course will begin with the fundamentals of Software Development Life Cycles and basic concepts associated with Software Development. Both traditional and agile development techniques will be presented to introduce the participants to professional software development. In the second part of the course, we'll introduce the concept of Software Process Improvement and work on the fundamentals of the CMMI and XP (eXtreme Programming) practices.

IT 562
An Introduction to SOA Concepts and Development

This course is an advanced analysis and design course that covers traditional OO approach and the modern SOA based software development. Students will be able to get a grasp of fundamental issues and be able to compare and contrast the approaches. The first part of the course covers Object-Oriented Concepts, Analysis and Design. Part two covers SOA concepts and the part three introduces programming SOA applications with examples. Part I : Object-oriented Analysis and Design using UML The objective of this part is to provide the basics of object-oriented software engineering including object-oriented analysis and design using UML. Topics covered: Fundamental concepts of software design & UML (Unified Modeling Language), Requirement analysis, UML notations, Use case diagrams, Class diagrams and Case studies. Part II : SOA Principles This part is an introduction to key concepts and issues associated with SOA and provides an overview of SOA based software lifecycle, development and technologies. Students will be introduced to the fundamental elements of SOA Concepts, Analysis and Design along with a brief overview of Web services, Services and Component Development, Business Process Management, Enterprise Services Bus technologies. SOA Concepts, Analysis and Design Key issues involving services and service infrastructure for SOA SOA-compatible software development process SOA governance and software development Impact of SOA in each phase of the software development process Part III : Developing Java-based SOA Applications This part will help students understand and use software development technologies for SOA based applications including: Understanding the role of Web services and Web service usage JEE Components EJB3 / JAX-WS Business Process Management (BPM) Enterprice Service Bus.

IT 564
Iterative Software Development for Project Managers

This course aims to develop the project/product and change management skills of the students following the approaches suggested by the iterative and agile software development processes. The methods detailed in Unified Process, Scrum, CMMI, Goal Directed Process and Toyota Production System will be used in the lectures. After finishing the course, the students will have a general understanding of software quality, project/product management requirements and they will able to perform the most important aspects of iterative project management. Additionally, the instructor will share his real world experiences, alternative information technology department organization structures, techniques regarding the office politics and relevant human resources approaches.

IT 567
ITIL and IT Management (elective)

ITIL (Information Technology Infrastructure Library) is the most widely adopted approach for IT Service Management and has been used as a de facto standard by the IT industry since 1980 for IT Management, IT Service Management and IT Infrastructure management. ITIL advocates that IT services must be aligned to the needs of the business and underpin the core business processes. It provides guidance to organizations on how to use IT as a tool to facilitate business change, transformation and growth. The ITIL best practices are currently detailed within 5 core publications which map the entire ITIL Service Lifecycle. These publications are Service Strategy, Service Design, Service Transition, Service Operation and Continual Service Improvement. Lectures will cover practical applications, case studies, software and real market projects that depend on theoretical IT management processes. Every week there will be a presentation session for real-life cases and industrial/enterprise software applications. Students will have the opportunity to thoroughly learn the 26 processes of ITIL listed in the core publications. There will be presentations for each session based on the product family of BMC and Manage Engine software. Course will be aligned with the accredited syllabus and concepts of ITIL. Core publications will be summarized and mapped onto the leraning objectives of the international ITIL certificate. By the end of this class, students will be ready to take the exam to be ITIL Foundation certified if they desire to do so.

IT 571
Linux System Administration (elective)

This course provides the students with an understanding of how to install various Linux operating systems and undertake periodic and day-to-day system administration tasks. Topics covered include the system installation, how to boot up and shut down the system, maintaining disks, file system maintenance, reconfiguring the system kernel, application/system file installation and updates, adding hardware to the Linux System, debugging Linux, creating and managing user accounts; creating and managing directory Shares with NFS and Samba servives; FTP and HTTP service configuration. Also Performance and security issues covered with SeLinux implementations take part in the course content