CS 160-01 | Team | Product | Documents |
---|---|---|
Big Trains | Bus Stop | brochure concept design review |
Code Ninjas | Connect You | brochure concept design review |
Mak Survival Group | JereJournal | brochure concept design review |
Revy | Reviews You Can Trust | brochure concept design review |
Ruby Baby | Nugget | brochure concept design review |
Softneers | Food Buddy | brochure concept design review |
TBA | Tasty Based Awesomeness | brochure concept design review |
Underground RailsRoad | LazySandwich | brochure concept design review |
CS 160-02 | Team | Product | Documents |
---|---|---|
Face | WebMusic | brochure concept design review |
Green | Launcher | brochure concept design review |
Hacking Bad | ShopSJSU | brochure concept design review |
Mak & Cheese | Purplebox | brochure concept design review |
Spartans on Rails | WishList++ | brochure concept design review |
SpartanSE | NearBite | brochure concept design review |
The A Team | JoinIn | brochure concept design review |
The Directors | CineTracker | brochure concept design review |
CMPE 131-01 | Team | Product | Documents |
---|---|---|
ARMY | ClubHub | brochure concept design review |
Codiggers | ClubHub | brochure concept design review |
Cupid's Minions | Bumpin' Uglies | brochure concept design review |
Fabulous | #1 Auto Body Shop | brochure concept design review |
JAMH | JAMH | brochure concept design review |
Gains | Cookbook | brochure concept design review |
NoName4 | Book Domain | brochure concept design review |
Piramides | Opus Swap | brochure concept design review |
Rubber Ducks | Naac | brochure concept design review |
RubyLand | SpartaRoomie | brochure concept design review |
Sour Patch Kids | EE101 Tester | brochure concept design review |
Unispace | BookBag | brochure concept design review |
# | Date | Due | Assignment |
---|---|---|---|
1 | Jan 28 | Feb 8 |
Write a Ruby program
Input file: widgets.csv Expected output (match closely): widgets.out Suggested solution: Widgets.rb |
2 | Feb 11 | Feb 19 | First draft with Rails |
3 | Feb 18 | Feb 26 |
Functional Specification
Use case description form CS 100W report rubrics |
4 | Feb 23 |
Conceptual design and oral presentation
PowerPoint rubrics |
|
5 | Mar 10 | Mar 25 | Model-view-controller architecture and data models |
6 | Apr 5 | Apr 15 | Project schedule (Gantt chart) |
7 | Apr 14 | Apr 22 | Test cases |
Date | Solutions | |
---|---|---|
Midterm | Mar 17 | solutions |
Date | Content |
---|---|
Jan 28 | Slides: Goals of the course; what is software engineering; programming in the small and large; complexity and change; the five C's; method, methodology, process; team member roles; class projects; project teams; postmortem report; grading; web application architecture; static and dynamic web pages; Rails application architecture |
Feb 2 | Slides: Ruby interpreter IRB; variables; types: numbers, strings, symbols, arrays, hashes, booleans; conditional assignment; constants; conditional statements; iteration; methods; classes; getters and setters; inheritance; batch programs; simple I/O; Assignment #1 |
Feb 4 | Slides: Full stack framework; Rails mantra; model-view-controller (MVC); fast start; Rails example; Rails directory structure; Rails commands; database migrations; scaffolding code; SQLite; object-relational mapping (ORM); Rails console; create, query, update, delete database records; database schema |
Feb 9 | Slides: Add a table column; data validation; table associations; comments table; controllers; REST; routing; controller actions; redirct vs. render; embedded Ruby file (.erb); response formats; flash messages; comments controller |
Feb 11 | Slides: Assignment #1 suggested solution; views; embedded Ruby; output tags; control flow tags; helpers; index page generation; layouts; forms; Assignment #2 |
Feb 16 | Slides: Version control system: local, centralized, and distributed; Git: file differences vs. snapshots, local and remote operations and repositories, three file states; GitHub: personal account, team repository, clone local repository; Git: local changes, already have local files, push and pull; GitHub repository statistics; GUI-based Git interface; deployment to Heroku |
Feb 18 | Slides: Project phases; waterfall model; agile software development; requirements elicitation; bridging the gap; functional and nonfunctional requirements; what requirements must have; strong statements; how to get requirements; use cases; UML use case diagram; use case description; ATM example functional specification; Assignment #3 |
Feb 23 | Slides: Conceptual design; example conceptual design presentation; Assignment #4 |
Feb 25 | Slides: Analysis goal and submodels; MVC model, view, and controller objects; bank ATM example; dynamic model; UML sequence diagram; UML statechart diagram; object model associations; aggregations and compositions; generalization; attributes; system design; designing a compiler; software architecture; partitioning; coupling; framework classes; cohesion; services |
Mar 1 | Oral conceptual design reviews |
Mar 3 | Oral conceptual design reviews |
Mar 8 | Slides: Layering; data independence; repository issues; database system architecture; steps to develop a database; database requirements; data modeling: conceptual, logical, physical; entities and attributes; conceptual model example; ER diagram; relationships; cardinality; example ER diagrams |
Mar 10 | Slides: Relationships: 1:1, 1:M, M:N, exact cardinalities, attributes; logical data model; relational tables; primary key; mapping entities; entity integrity constraint; foreign keys; mapping relationships: 1:1, 1:M, M:N; school database example; normalization: first and second normal forms; Assignment #5 |
Mar 15 | Slides: SQL; query examples; joins; record insert, update, delete; create and drop a database; create a table; school example; database connection pool; data access layer; review for the midterm |
Mar 17 | Midterm exam |
Mar 22 | Slides: Midterm solutions; bug tracking; Bugzilla; bug lifecycle; managing expectations; estimates, targets, and commitments; good estimates; time unit inflation; estimation techniques; project schedules: Gantt chart, PERT chart, resources chart |
Mar 24 | Slides: Project team design reviews; "Sins of Software Estimation"; work breakdown structure; project schedule; Gantt chart; Gantt chart demo; critical path; PERT chart |
Apr 5 | Oral application design reviews |
Apr 7 | Oral application design reviews |
Apr 12 | Slides: Project cartoon; one month to go; cost of correcting defects; make small mistakes early; software V&V; software testing; software reliability; testing: mindset, who does it, when, different types; unit testing; testing framework; Rails support for testing; integration testing; stress testing; regression testing |
Apr 14 | Slides: Profiling; usability; Don't Make Me Think; read vs. scan a web page; "satisfice"; conventions, visual hierarchies; usability testing the Apple Newton; beta testing the NASA Mars rover mission; system testing; acceptance testing; when to stop testing; test plan; example functional test case; Assignment #7; test-driven development (TDD); logging; Rails support for logging and debugging |
Apr 19 | Slides: Code reviews; formal code review; what to review; what to ask; why do code reviews; benefits; resistance; pros and cons; continuous code reviews; productive reviews; what to look for; software metrics; good metrics; how to use; process metrics; project metrics: objective and subjective; metric normalization: size-oriented and function point |
Apr 21 | Slides: Project scheduling triangle; project failures: causes, signs, and phases; Denver International Airport's automated baggage-handling system; how to spot impending doom; when to kill a project; software engineering code; whistle-blowing; speaking out |
Apr 26 | Oral code reviews |
Apr 28 | Oral code reviews |
May 3 | Slides: Risk management; personnel management; NASA project do's and don'ts; Extreme Programming: dealing with risk, five values, basic principles, best practices, manager's job, implementation barriers |
May 5 | Slides: Rational Unified Process (RUP); essential principles; key modeling elements: roles, activities, artifacts, and workflows; disciplines; phases: inception, elaboration, construction, and transition |
May 10 | Product demos |
May 12 |
Product demos
Slides: Review for the final |
Second goal: So that you can immediately apply software engineering concepts, you'll learn to work on a small team to build and deploy a web application using the full-stack Ruby on Rails framework, which supports important client-server concepts:
During the semester, each project team will
These are important real-world job skills for the professional software developer! This is a challenging course that will demand much of your time and effort throughout the semester.
Department policy is to enforce
all course prerequisites strictly
CS major | ||
CS 100W | Technical writing | grade C or better |
CS 146 | Data structures and algorithms | grade C- or better |
CS 151 | Object-oriented design | grade C- or better |
CMPE major | ||
CMPE 126 | Algorithms and data structure design | grade C or better |
SE major | ||
CS 46B | Introduction to data structures | grade C or better |
Beginning Software Engineering Rod Stephens Wrox/Wiley, 2015 ISBN: 978-1118969144 |
Rails Crash Course: A No-Nonsense Guide to Rails Development Anthony Lewis No Starch Press, 2015 ISBN: 978-1593275723 |
As described in Rails Crash Course, you will need to download and install on your Mac, Windows, or Linux platform the following software: Ruby, Rails, Git, Heroku.
Updated instructions to install on Windows.
Download and install either of the following:
Also download and install:
There may be other software packages announced during the semester.