University of Maryland Global Campus

CMSC 345: Software Engineering Principles and Techniques

A guide to UMGC's CMSC 345, the course that moves computer science students from writing code to planning, documenting and managing software projects.

Updated October 2026 · 5 min read

CMSC 345 at the University of Maryland Global Campus is where programming becomes engineering: planning, documenting and managing software rather than just writing it.

UMGC describes it as an introduction to software engineering that emphasizes foundational principles, processes and best practices. The prerequisite is CMSC 215 (or CMIS 242), and the course was formerly CMIS 330. It is also a prerequisite for the computer science capstone, CMSC 495, so the habits you build here carry forward.

Students who are comfortable coding often find this course surprisingly hard. Much of the work is written: requirements, plans and design documents that must be precise enough for someone else to build from.

Course at a Glance

ItemDetails
UniversityUniversity of Maryland Global Campus (UMGC)
Course codeCMSC 345 (formerly CMIS 330)
Credits3
PrerequisiteCMSC 215 (or CMIS 242)
Credit overlapCredit for only one of CMIS 330, CMIS 388A or CMSC 345
Typical workSmall collaborative projects, plans, requirements and design documents

What CMSC 345 Covers

Topic (UMGC)What it means in practice
Development methodologiesComparing plan-driven (waterfall) and iterative or agile approaches
Project planningScope, tasks, estimates, schedules and risks
DocumentationRequirements, design, test plans and user documentation
Configuration managementVersion control, branching and tracking changes
Quality, usability, security and ethicsTesting, user-centered design, secure practice and professional responsibility

UMGC notes that projects involve small-scale, collaborative hands-on work, so expect to work with classmates on at least part of the course.

Key Concepts Explained

Good Requirements

A requirement should be clear, testable and about what the system does, not how. Functional requirements describe behavior; non-functional requirements describe qualities such as performance, security or usability.

Example: "The system should be fast" cannot be tested. "Search results appear within two seconds for 95% of queries under normal load" can be tested, and a tester knows exactly what to measure.

Traceability

Each requirement should link to the design elements that satisfy it and the tests that verify it. A simple traceability matrix shows reviewers that nothing has been forgotten.

Version Control

Configuration management usually means Git in practice. Small, frequent commits with meaningful messages make collaboration and grading easier.

Example: "Add input validation to registration form (REQ-07)" is a useful commit message. "Fixed stuff" tells a teammate nothing and breaks traceability.

Typical Assignments and How to Approach Them

Assignment typeWhat it testsHow to approach it
Project planScoping and schedulingBreak work into tasks small enough to estimate
Requirements documentPrecision and testabilityNumber each requirement and write acceptance criteria
Design documentStructure and modularityUse diagrams (UML class, sequence) with short explanations
Test planQuality thinkingMap tests to requirement numbers
Team reflectionProcess awarenessDescribe what worked and what you would change, with examples

Choosing and Justifying a Methodology

A common CMSC 345 task is to choose a development approach for a project and defend it. There is no single right answer; marks go to the reasoning.

ApproachFits best whenWatch out for
WaterfallRequirements are stable and well understoodLate discovery of problems
Iterative or incrementalCore features are known, details will evolveScope creep between iterations
Agile (for example Scrum)Users can give frequent feedbackThin documentation if not managed

Link your choice to the project's facts: team size, how certain the requirements are, how often the client can review work, and any regulatory need for documentation.

A short paragraph explaining why you rejected the alternatives shows the judgment the course is designed to build. Ethical considerations such as accessibility and data privacy should appear in the plan itself, not only in a closing section.

Where Students Get Stuck

Study Tips for CMSC 345

How We Help with CMSC 345

Send the assignment instructions, any templates, your project idea and earlier feedback. A writer with software engineering experience can explain a methodology, prepare a model requirements, design or test document for a comparable project, or edit your own draft for precision and structure. For the next stage, see our capstone project help guide.

GradeEssays is independent of the University of Maryland Global Campus. Our models are for study and reference; your submitted work, and your share of team work, must be your own under UMGC's academic integrity policy.

Get Your CMSC 345 Documents in Shape

Share the template, project idea and feedback. We prepare a clear model document set you can learn from.

Start My Software Engineering Help

Free revisions · Full refund if late · Written from scratch for your order

Frequently Asked Questions

What is the prerequisite for CMSC 345?

UMGC lists CMSC 215 (or CMIS 242).

Is CMSC 345 the same as CMIS 330?

CMSC 345 was formerly CMIS 330, and you can receive credit for only one of CMIS 330, CMIS 388A or CMSC 345.

Is there group work in CMSC 345?

UMGC's description says projects involve small-scale, collaborative hands-on work.

Is CMSC 345 mostly coding?

No. Much of the work is planning and documentation, supported by hands-on project work.

Why does CMSC 345 matter for the capstone?

UMGC lists CMSC 345 as a prerequisite for CMSC 495, the computer science capstone.

Can you help me write clearer requirements?

Yes. We can review your requirements for testability and clarity and explain each change.