From August 2023 to April 2024, I attended the University of Cincinnati to earn my Master of Engineering degree. This two-semester program furthered my education in software engineering. However, unlike other graduate programs, the program's focus is on technical application instead of research. I completed a capstone project/paper instead of a dissertation/thesis.
This course provides students with information and experiences that will help them be successful in the Master of Engineering Program. Since the MEng is a workforce-focused degree, much of the content and activities are centered around helping students identify and obtain employment. The course also provides detailed information on how to successfully complete all program requirements in a timely manner.
This course examines recent advances in the field of software engineering, which expands on and goes well beyond concepts learned in the undergraduate-level software engineering course. Advanced techniques for software design, testing and analysis, and maintenance that cover different domains, including mobile applications and cyber-physical systems, will be discussed. These techniques include program analysis, model inference, machine learning, data mining, artificial intelligence, and natural language processing. Students will participate in individual and team projects to apply the methods learned in this course.
This course introduces the basic concepts of human-computer interaction and the latest development of the technology for developing interactive systems. Major topics cover the role of computer technology, human users and human factors for designing Windows-based applications, and design methodologies for building software applications.
The student studies the following topics:
Meaning of software requirements & stakeholder identification
Elicitation & systematic RE literature review
Modeling enterprise & goal modeling
Modeling behavior & qualities
Visual analytics for RE
Visual modeling notations & empirical RE research
Requirements communication & negotiation
Managing inconsistency & viewpoints
Prioritization & traceability
RE for software product lines & requirements evolution
This course examines the non-technical factors that enable engineers and other technical professionals to maximize their contribution to organizational effectiveness. The course covers communication processes and impediments to effective communication including written communication, presentations, and meeting facilitation. Models of motivation as regards technical professionals are presented and their application to the work setting is examined. Leadership models and the interaction of leaders and followers are also presented. Conflict management and appropriate methods for constructively dealing with this are discussed. Students develop personal development plans for continued learning and performance improvement.
Individual projects under the supervision of departmental faculty in partial fulfillment of the Master of Engineering degree.
The topics covered in the course include:
Introduction to Software Architecture
The engineer's toolkit: SCM, build, test, deploy tools
Risk in software engineering
Continuous integration
N-tier architectures
Layering
Domain logic
Datastore mapping (ORM)
Presentation
Concurrency, distributed transactions
Paxos
Chubby/zookeeper
Consistency levels
Eventual consistency -> ACID
System and data partitioning
Software architecture patterns
The topics covered in the course include:
Fundamentals of software quality and quality assurance
Verification and validation perspectives
Software testing types and concepts
Test planning and management
Software inspection
Formal methods
Quantifiable improvement
Software reliability
Global software engineering
This course introduces students to data visualization - a computer science research area that uses methods in human-centered computing to address contemporary data science challenges. Students consider technical and computational challenges in engineering interactive visual interfaces for diverse data types, tasks, users, and hardware platforms. We discuss visualization techniques for tabular, text, and biological and medical data, and will discuss computational techniques for large and high-dimensional data. Students use human-centered design methods to prototype and evaluate alternate designs and interaction approaches. The course examines contemporary topics, such as designing for display and interaction technologies "beyond the desktop and mouse/keyboard" and the interplay between visualization and data analysis techniques including data mining, artificial intelligence, and machine learning. This is a programming-intensive course, and students use modern tools and libraries to implement interactive data visualization applications of real datasets. Students are expected to critically evaluate visualizations created by others to present their work to their peers and disseminate their applications and source code to a wider community.
The course covers the following topics:
Introduction and Historical Perspectives
Cloud Models: IaaS, PaaS, SaaS
Underlying technologies: Networking, Internet Architecture, Virtualization
Distributed System Concepts
MapReduce Paradigm & Hadoop
Cloud Applications & Architectures
Modern Case Studies in Hadoop and Cloud Applications
Designing Applications for the Cloud
Cloud Security
Public cloud offerings