TR    EN

Software Engineering Master of Science with Thesis Program Course List

Compulsory Departmental Courses

Software Engineering Elective Courses

Computer Engineering Elective Courses

Scientific Preparation

Information Systems Engineering Elective Courses

Compulsory Departmental Courses

SE 554 - Software Quality Management
Introduction to software quality and assurance; components of software quality assurance; configuration management; reviews, inspection and audits; software testing strategies and techniques; software quality standards; certification and assessment; introduction of case studies related with software process improvement and quality metrics

SE 556 - Software Construction and Evolution
Software construction fundamentals; software complexity; construction management; construction models; construction planning; software measurement; construction languages; coding; construction testing; reuse; verification and standards in construction; construction quality; integration

SE 589 - Graduation Seminar
Each Master's student with thesis option, at least one semester prior to his/her thesis defense, is expected to give a presentation on his/her thesis work.

SE 598 - Special Studies on Thesis Subject
Research methodologies; review of background knowledge; academic reading

SE 599-1 - THESIS
Problem identification and analysis. Research methodologies. Literature Survey. Typical phases of the system development life cycle. Progress Report.

SE 599-2 - THESIS
Research methodologies. Requirement Analysis. Design. Typical phases of the system development life cycle. Progress Report.

SE 599-3 - THESIS
Research methodologies. Implementation. Testing. Typical phases of the system development life cycle. Thesis documentation.

SE 600 - Research Methods in Software Engineering
Rigorous, scholarly research, particularly theses or dissertations; literature review; surveys; meta-analysis; empirical research design; formulating research questions; theory building; qualitative and quantitative data collection and analysis methods; validity; reliability; triangulation; building evidences; writing research proposal and publication

Software Engineering Elective Courses

SE 503 - Information Systems Design
Introduction to software architecture; design patterns; object-oriented modeling and architectural design with contemporary notation; experimentation in design; design prototyping; working on design teams and management of object-oriented projects; detailed design and implementation issues; design reviews; using design document for coding

SE 546 - Decision Support in Health Informatics
Choosing the correct information for different decisions and communicate its meanings to users; evaluation of statistical and other methods and tools; the difference between research databases and operational databases; techniques to effectively communicate quantitative healthcare data using tables and graphs; methods for choosing the right medium

SE 550 - Software Engineering
Introduction to software engineering and related topics; software process and project metrics; project planning; scheduling and tracking; configuration management; software quality assurance; requirement analysis; data flow diagrams and related topics; design concepts and methods; implementation; testing methods and test strategies; object oriented concepts and principles

SE 552 - Advanced Software Project Management
Introduction to project management; algorithmic cost estimation models; advanced cost estimation models; function points estimation; risk assessment; life cycle models; prototyping; management of software reuse; software maintenance; software maturity framework; case studies

SE 555 - Model Driven Software Development
Introduction to MDD; modeling languages; software reusability; domain specific modeling; metamodeling; model transformations; metamodeling tools; code generation; MOF (meta object facility); software components

SE 558 - Software Architecture
Introduction to software architecture; architecture business cycle; creating an architecture; introducing a case study; understanding and achieving quality; design, document and reconstruct software architecture; methods for architecture evaluation; quantitative approach to architecture design decision making; software product lines; middleware, model-driven, service-oriented, semantic web, aspect-oriented; applied architectures and styles; design for non-functional properties; architecture adaptation

SE 560 - Requirements Engineering
Domain understanding and requirements eliciation; requirements evaluation; requirements specification and documentation; requirements quality assurance; requirements evolution; modelling system objectives with goal diagrams; risk analysis on goal models; modelling system agents and responsibilities; modelling system behaviours; integrating multiple system views; a goal-oriented model-building method in action; formal specification of system models

SE 562 - Formal Methods in Software Engineering
Introduction to formal specifications for software development; software specification and development with mathematical semantics; constructing formal specifications for software-intensive systems; specification languages, Z, object Z and OCL; relating specifications and implementations; role of formal specification in system life cycle; classification of formal methods; formal validation and verification

SE 564 - Service Oriented Architecture and Business Process Management
Basics of SOA; SOA design principles; SOA standards, foundations, BPEL, SOAP, WSDL and UDDI; governance; business process models; business process management from process and content management to collaboration and analytics; BPM enabled by SOA

SE 570 - Mobile Software Engineering
An overview of mobile platforms. App Development in Android. UI Overview, Activities, Application Lifecycle. Intents, Intent Filters, Broadcasts, BroadcastReceivers. Shared Preferences, Files, SQLite DB, Content Provider. Automated testing, Test-Driven Development. Google Maps, MapView, MapActivity. Threads, Services, Status Bar Notifications. Performance engineering. Reverse Engineering, software maintenance and evolution. Security. Energy, battery and resource usage. Software testing and QA.

SE 571 - Agile Software Development Approaches
Introduction to agile methods; extreme programming (XP); Lean, Scrum; Crystal; feature-driven development (FDD); Kanban; dynamic systems development method (DSDM); architecture and design issues in agile software methods

SE 577 - Software Measurement
Measurement theory; measure design and validation; measurement requirements; measurement process; techniques and tools for software measurement; measurement frameworks; measurement management; project, organization, product, service and quality measurement; ISO measurement standards; software estimation; software measurement repositories

Computer Engineering Elective Courses

COMPE 501 - Object Oriented Design & Programming
Thinking Object-Oriented. Abstraction. Object-Oriented analysis and design concept and design patterns. UML: Introduction, role of modeling, models and views, core diagrams, fundamental elements (structural elements, Java independent entities, Java dependent entities). Introduction to Sequence, Class, and Package Diagrams. Development Lifecycle and UML (Requirements, Analysis & Design, Construction, Test, Deployment). The Full Lifecycle. Java and UML: Responsibility-Driven Design (RDD) method, and using CRC. Classes and methods. Messages, instances and initialization. Inheritance, subclass and subtype. Static and dynamic behavior. Substitution. Multiple inheritance and polymorphism.

COMPE 502 - Advanced Databases
Database system concepts. Transaction processing, concurrency control and database recovery. Object-oriented and Object-relational databases. Semi-structured data and XML. Parallel and Distributed Databases. Advanced Concepts of Distributed Databases. Introduction to Big Data. Temporal Databases.

COMPE 511 - Internet Programming
Internet programming environments. Home page design with html and dhtml. Javascript, client-server model, client side scripts, and server-side scripts. Web servers. CGI, SSI, SSL, certification, cookies, and sessions. Database integration. Web security. XML. Designing interactive internet applications.

COMPE 512 - e-Commerce
E-Commerce business models. Current state of the art. Introduction to enabling technologies and standards. World Wide Web consortium\'s recommendations. XML and RDF. Storing and querying XML documents. XML query languages: XML-QL and XSLT. Workflow Systems for e- Commerce. Message Oriented Middleware. Current B2B e-Commerce Frameworks: Open buying on the Internet (OBI), common business library (CBL), CommerceNet\'s eCo framework, RosettaNet, BizTalk, Web services, and ebXML. Descibing the semantics of Web services. Electronic marketplaces. Personalization on the Internet. Agents and negotiation in e-Commerce. Supply chain integration on the Internet. Research issues.

COMPE 513 - Computer and Network Security
Encryption techniques and algorithms. Public-key encryption. Hash functions. Digital signatures. Authentication. Network security. Web security. Operating System security(Unix and Windows). Bell-LaPadulla model. Software and database security.

COMPE 514 - Advanced Visual Programming
Review of Object-Oriented programming. Visual programming basics such as value types, operator overloading, exception and event handling. Using GUI frameworks. Working with files and data access by using XML.

COMPE 515 - Advanced Java Programming for the Web
JDK documentation. Java debugger. Java documentation style. Javadoc. Java development with IDE tool. Java 2D API. Advanced Java SWING components. Java thread class. Lifecycle of thread. Java socket, and ServerSocket class. Integrating Java with web server. Servlets. Using Java with database JDBC, RMI, Java IDL, CORBA. Java security features. Java reflection API. Java internationalization. Java native interface. Java Server & Enterprise Java Beans. Object relational mapping.

COMPE 518 - Web Design and Development
Web design and development process. Requirements analysis. Interface design. Site design. Page design. Graphics and multimedia. Production. Maintenance and evaluation.

COMPE 521 - Multimedia Systems
Hardware and software requirements of multimedia systems. Multimedia data types (digital audio, video, image). Image and video compression techniques. Multimedia communication systems. Content-based multimedia storage and retrieval. Mobile multimedia.

COMPE 523 - Network and System Management
OSI systems management overview. Systems management terms. Systems management support functions. Structure of management information. Internet network management: SNMPv1 and MIB-II. Internet network Management: SNMPv2. IEEE network management of LANs and MANs. SNA systems management and system view. Configuration management. Fault management. Network management topics, issues, and trends.

COMPE 562 - Multiagent Systems
Agent paradigm. Abstract agent architectures. Design of intelligent agents. Agent cooperation. Auction systems. Negotiation. Argumentation. Interaction languages and protocols. Distributed problem solving. Coordination. Applications for multi-agent systems.

COMPE 564 - Natural Computing
Problem Solving by Search; Hill Climbing; Simulated Annealing; Artificial Neural Networks; Genetic Algorithms; Swarm Intelligence (including Ant Colony Optimization and Particle Swarm Optimization); Artificial Immune Systems.

COMPE 568 - Advanced Artificial Intelligence
Intelligent agents. Problem solving by searching. Informed/uninformed search methods. Exploration. Constraint satisfaction problems. Knowledge and reasoning: first-order logic, knowledge representation. Learning. Selected topics: neural networks, natural computing.

COMPE 572 - Theory of Computation
Models of computation. Church-Turing thesis. Decidability and undecidability. Recursive enumerability. Time complexity. Classes P and NP. Space complexity. LOGSPACE, PSPACE-completeness.

COMPE 573 - Formal Languages and Automata
Languages and their representations. Finite automata and regular grammars. Context-Free Grammars. Concept of abstract machines and language acceptance. Deterministic and non-deterministic finite state machines. Pushdown automata. Turing machines and introduction to the theory of computation.

COMPE 574 - Advanced Algorithms
Design and Analysis of Algorithms, O-Notation, Graph Algorithms, Topological Sort, Minimum Spanning Trees, Single-Shortest Paths, All-Pairs Shortest Paths, Flow networks, NP-Hard and NP-Complete Problems.

COMPE 575 - Parallel and Cluster Computing
Models of parallel computing – dependence on architecture, trade-off between computation cost and communication cost. Performance measures for parallel computation – computational complexity. Techniques for parallel computation – divide and conquer, partitioning, and pipelining. Parallel algorithms for sorting, searching and matrix computations. MPI and OpenMP environments for parallel programming.

COMPE 576 - Programming Languages Concepts
Study of programming language concepts: types, values, expressions, and statements. Program structure. Procedures and functions. Structured data. Abstraction and encapsulation. Inheritance. Dynamic binding. Concepts of programming paradigms will be introduced by means of functional, procedural, and object-oriented programming languages.

Scientific Preparation

COMPE 723 - Fundamentals of Object-Oriented Programming
Data types. Expressions and statements. Functions and scope rules. Class definitions. Inheritance. Polymorphism. Name overloading. Templates. Exception handling. Input/Output. Object oriented principles will be introduced using the UML and C++ programming language.

COMPE 726 - Object-Oriented Data Structures
Stacks. Recursion. Queues. Creation and destruction of dynamic variables. Serial linked lists. Circular lists. Doubly linked lists. Circular doubly linked lists. Sorting and searching algorithms. Space and time considerations. Binary trees. Binary search trees. Tree traversal algorithms. Binary tree sorting algorithms. Hashing.

SE 722 - Fundamentals of Software Engineering
Basic concepts: abstraction, problem solving, reuse, and system decomposition. Overview of software engineering: life cycle, systems, customers, users, requirements, design, implementation, software quality assurance, Software configuration management, testing and maintenance.

Information Systems Engineering Elective Courses

ISE 512 - IT Portfolio Management & IT Standards
Processes for the integrated project life (approval, identifying & planning, implementation, management & tracking, assessment & improvement). Prioritizing IT projects. Resource allocation. Managing risks and costs. Assessment and governance. Standard metrics for measuring ROI. ITIL, COBIT, Val IT, Sarbanes Oxley, related IEEE and ISO standards.

ISE 514 - Cloud Computing
Basics of cloud computing, discovering the value of the cloud computing for business, advantages of cloud computing, elements of cloud computing, technical foundation of cloud computing, managing data in cloud, standards, managing and securing cloud services, virtualization, service oriented architecture, managing cloud environment.