Course
ECE141a: Software Foundations
Sign-up for Slidespace now!
In order to access this course, you must first be a registered user of Slidespace. It takes less than a minute.
Description
This course is about the structures, algorithms, design principles, relationships, and patterns that comprise the stories we tell about our software. Software design is meant to be abstract, distinct and separate from architectures that bind our designs to specific implementation details.
Learning Outcomes
- Students will learn software design principles and techniques
- Students will be able to apply key design patterns
- Student will gain and understanding of intermediate C++ idioms
- Students will be able to apply necessary software engineering best practices
Lectures
-
IntroductionWelcome, syllabus, and some preliminary topics.lecturereadingvideo
-
A whirlwind tour of C++, P1Most of you will have already seen this material in another class. However, we'll do a quick (two lecture) review of the core C++ language to make… sure… we'll all up to speed.lectureassignmentvideo
-
A whirlwind tour of C++, P2In this lecture, we're going to finish up our introduction to C++ material, and explore some of the built-in classes (strings and… streams).lecturevideo
-
Communication Patterns
Learning to get our objects to communicate effectively
lecture -
Introduction to design patternsThe first step toward becoming an effective software designer is a clear understanding of the generally accepted design principles. There's no… better… place to start that with design patterns.lecture
-
Creational PatternsWe'll begin our discussion of design patterns by exploring some of the creational patterns.lecturereadingvideo
-
Structural PatternsBasic techniques to organize objectslecture
-
It's all a Game!Let's discuss our final assignmentlecture
-
More Behavioral PatternsMaking objects work together, betterlecture
-
Control PatternsIn this presentation, we're going to talk about ways to simplify our code, and begin the discussion of how we can make our… objects… work more…… expressively, and effectively.lecture
-
Design Studio, Part 1We've been discussing patterns, anti-patterns, and the process of converting stories into scenarios, and scenarios into code. Let's… put… our new skills to… work.lecture
-
ThreadingMulti-tasking is much easier in C++ these dayslecture
-
DiagrammingTelling stories really counts in software design. Capturing ideas with diagrams is one of the most common ways we share… high-level ideas. Let's examine some of the popular techniques.lecture
-
Mid-term week: Anti-patternsAnti-patterns are patterns that we commonly find in code, that we should try to avoid. We'll discuss some common anti-patterns, and how to avoid them.lectureassignmentvideo
-
Where to go from here...Continuing on our journeylecture
-
What's next, and final thoughts
Getting ready for ECE141b
lecture -
Behavioral PatternsIn this lecture, we're going to begin our review of behavioral patterns – which describe ways that objects behave, organize, and……… communicate. These… are concepts you'll… rely on again and again to design more flexible solutions.lecturevideo
-
Digging into the debuggerLearning to properly use your debugger is a valuable skill when debugging software. Before we dive headlong into… software… design topics, we'll go… over debugger basics.lecture
-
Testing and ValidationThis lecture will discuss a number of concepts related to software design and quality. This is essential material for… helping students… improve their… software design skills.lectureassignmentreadingtest
-
Design Studio, Part 2Let's get our class fully functionallecture
-
Werfen Research Discussion
Short description of MAS of CoSE, Slidespace (SRL)
lecture -
ECE141a FinalGood luck to everyone!lecture