| 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.