-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathpath---resources-final-exam-guide-9fcf326fdfa843da740e.js
2 lines (2 loc) · 5.21 KB
/
path---resources-final-exam-guide-9fcf326fdfa843da740e.js
1
2
webpackJsonp([76385984562332],{349:function(e,t){e.exports={data:{markdownRemark:{html:'<p>The final exam will cover all the material that was covered in class, and the sprints. This includes material that was presented in class, <em>as well as all the readings.</em></p>\n<p>To view the types of questions that you can expect for the exam, scroll to the end.</p>\n<ol>\n<li>\n<p>Java</p>\n<ul>\n<li>Know the <a href="http://web.mit.edu/javadev/doc/tutorial/java/objects/index.html">basics</a> of Object Oriented Programming</li>\n<li>Know the <a href="https://www.cs.cornell.edu/courses/cs409/2000SP/Java/java-notes.html">fundamentals</a> of the Java language</li>\n<li>Know the <a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod">SOLID</a> design principles, and how to apply them.</li>\n</ul>\n</li>\n<li>\n<p>User Stories</p>\n<ul>\n<li>Know the <a href="http://www.subcide.com/articles/how-to-write-meaningful-user-stories/">format</a> for a user story</li>\n<li>Know how to evalute user stories using the <a href="https://xp123.com/articles/invest-in-good-stories-and-smart-tasks/">INVEST</a> principles</li>\n</ul>\n</li>\n<li>\n<p>Testing</p>\n<ul>\n<li>Know the difference between <em>validation</em> and <em>verification</em></li>\n<li>Know the basics of the JUnit test framework</li>\n<li>Know what a <a href="https://martinfowler.com/bliki/UnitTest.html">unit test</a> is, and how to write them using the JUnit framework</li>\n<li>Know the difference between blackbox and whitebox testings</li>\n<li>Know how to write test cases (input and expected outputs) for a system, using blackbox and whitebox testing.</li>\n<li>Know the different types of coverage (statement, branch, path), and how to calculate them</li>\n</ul>\n</li>\n<li>\n<p>UI design</p>\n<ul>\n<li>Know the <a href="https://www.nngroup.com/articles/usability-101-introduction-to-usability/">Nielsen Usability Goals</a></li>\n<li>Know how to perform a heuristic evaluation</li>\n<li>Know the different types of prototypes (paper, low-res, high-res), pros and cons, and when to use them</li>\n<li>Know what personas are and how to use them</li>\n</ul>\n</li>\n<li>\n<p>Code smells and refactorings</p>\n<ul>\n<li>Know the different <a href="https://refactoring.guru/refactoring/smells">types of code smells</a>, and how to identify them in an existing code base (onyl the ones we covered in class)</li>\n<li>Know how to <a href="https://refactoring.guru/refactoring/techniques">refactor the code</a>, in order to remove them</li>\n</ul>\n</li>\n<li>\n<p>CRC Cards</p>\n<ul>\n<li>Know the format of a CRC card, and how to use them to derive an initial design of a system</li>\n</ul>\n</li>\n<li>\n<p>UML</p>\n<ul>\n<li>Know the different types of UML diagrams we covered in class</li>\n<li>Know how to draw a <a href="http://agilemodeling.com/artifacts/classDiagram.htm">Class</a> and <a href="http://agilemodeling.com/artifacts/sequenceDiagram.htm">Sequence</a> diagram</li>\n<li>Know how to interpret a UML diagram, and translate it into working Java Code.</li>\n</ul>\n</li>\n<li>\n<p>Design Patterns</p>\n<ul>\n<li>Know the different <a href="https://sourcemaking.com/design_patterns">Designs Patterns</a> we covered in class, when and how to use them</li>\n<li>Identify design patterns in existing code bases</li>\n</ul>\n</li>\n<li>\n<p>Software Architecture</p>\n<ul>\n<li>Know the different types of Architectural Patterns</li>\n<li>Know how to select an architecture, given a set of constraints</li>\n</ul>\n</li>\n<li>\n<p>Software Development Lifecycle</p>\n<ul>\n<li>Know the different processes that are used to manage software projects</li>\n<li>Know the pros and cons for each of them</li>\n<li>Select a process, based on a set of constraints.</li>\n</ul>\n</li>\n<li>\n<p>Project Management</p>\n<ul>\n<li>Know different techniques for project management (WBS, Gantt Chart, etc)</li>\n<li>Know the role estimates play in project management</li>\n<li>Know how to evaluate a risk</li>\n</ul>\n</li>\n<li>\n<p>Software Quality</p>\n<ul>\n<li>Know the different metrics used to measure the quality of a product</li>\n</ul>\n</li>\n</ol>\n<h1>Question types</h1>\n<p>There will be a design question. Starting from a short description (similar to the Design Fest activity in class, but smaller), you will need to design a system. This includes writing user stories (following the 3C format), CRC Cards and UML diagrams (Class and Sequence)</p>\n<p>There we be some OO design questions. You would have to evaluate a small snippet of code (~20 lines) to see if it violates any of the SOLID principles. If it does, you will need to provide a refactoring of the code, to remove the violation.</p>\n<p>There will be questions about testing. You will have to choose a testing techinque (blackbox or whitebox), and write a few (4-5) test cases. You also need to know different types of coverage, and how to write code to achieve a certain coverage (e.g. achieve 100% line coverage for a method).</p>\n<p>Finally, there will be an short questions that will cover the rest of the material. The answers for these questions will be 1-2 sentences at most. </p>',frontmatter:{path:"/resources/final-exam-guide",title:"Final Exam Study Guide"}}},pathContext:{}}}});
//# sourceMappingURL=path---resources-final-exam-guide-9fcf326fdfa843da740e.js.map