├── .gitignore ├── README.md ├── course-outline.md ├── deliverables ├── FinalPaper.md ├── MidtermUpdate.md ├── Presentation.md └── Proposal.md ├── lectures ├── Capstone_Lecture1.pdf ├── Capstone_Lecture2_RequirementsElicitation.pdf └── Capstone_Lecture3_RetrospectivesSprintPlanning.pdf ├── presentation_schedule.md ├── project_assignments.md ├── project_list.md └── syllabus.md /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | 3 | *.gem 4 | *.rbc 5 | /.config 6 | /coverage/ 7 | /InstalledFiles 8 | /pkg/ 9 | /spec/reports/ 10 | /spec/examples.txt 11 | /test/tmp/ 12 | /test/version_tmp/ 13 | /tmp/ 14 | 15 | # Used by dotenv library to load environment variables. 16 | # .env 17 | 18 | ## Specific to RubyMotion: 19 | .dat* 20 | .repl_history 21 | build/ 22 | *.bridgesupport 23 | build-iPhoneOS/ 24 | build-iPhoneSimulator/ 25 | 26 | ## Specific to RubyMotion (use of CocoaPods): 27 | # 28 | # We recommend against adding the Pods directory to your .gitignore. However 29 | # you should judge for yourself, the pros and cons are mentioned at: 30 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 31 | # 32 | # vendor/Pods/ 33 | 34 | ## Documentation cache and generated files: 35 | /.yardoc/ 36 | /_yardoc/ 37 | /doc/ 38 | /rdoc/ 39 | 40 | ## Environment normalization: 41 | /.bundle/ 42 | /vendor/bundle 43 | /lib/bundler/man/ 44 | 45 | # for a library or gem, you might want to ignore these files since the code is 46 | # intended to run in multiple environments; otherwise, check them in: 47 | # Gemfile.lock 48 | # .ruby-version 49 | # .ruby-gemset 50 | 51 | # unless supporting rvm < 1.11.0 or doing something fancy, ignore this: 52 | .rvmrc 53 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Capstone_Fall2018 2 | Computer Science / Bioinformatics Capstone, Fall 2018 (BIOSC 1640 / CS 1640 / CS 1900 / CS 1950 / CS 1980) 3 | -------------------------------------------------------------------------------- /course-outline.md: -------------------------------------------------------------------------------- 1 | ## Course Information 2 | 3 | **Taught by:** Bill Laboon 4 | 5 | **Room**: G8 Cathedral of Learning 6 | 7 | **Time**: Fridays 1:00 - 1:50 (internship and research), 1:00 - 2:50 (project and project studio) 8 | 9 | **Instructor's Office Hours:** 10 | * Room: 6305 Sennott Square 11 | * Wednesday 1:00 PM - 2:30 PM, Friday 9:00 AM - 10:30 AM 12 | 13 | _NOTE: You may also meet with the customer with whom you are working or one of their representatives._ 14 | 15 | All students shall submit a paper on their internship or project, as well as give an approximately 5-10 minute presentation on what they have done. For students doing group projects, only one paper should be submitted per group and one presentation will be given per group. 16 | 17 | The 1:00-1:50 section will include presentations from students (internship students first, then project students at the end of the term). The additional time for project students will consist of lectures on software engineering for the first few lectures, and then shall be used as time for meeting with groups / sprint retrospectives / planning / etc. 18 | 19 | Project students will also need to submit some other assignments, detailed below. 20 | 21 | ## Internship Students 22 | 23 | You have two main responsibilities this term: 24 | 25 | 1. Schedule a presentation on the work that you did during your internship. Do this by filing an issue on this repository (click on Issues then "New Issue") with your TOP THREE choices of which date to give your presentation. Possible presentation dates are located in the presentation_schedule.md file in this repository. Note you must select a date where INTERNSHIP presentations occur, NOT "Project" presentations. You must schedule a presentation date by noon on THIS WEDNESDAY (5 SEPTEMBER) . REMEMBER TO ADD "INTERNSHIP" TO THE BEGINNING OF YOUR ISSUE TITLE! 26 | 27 | 2. Write a 8 - 12 page paper on your internship experience and hand it in by the last day of class (7 DECEMBER). For details, see FinalPaper.md in the /deliverables subdirectory in this repository. 28 | 29 | ## Project Students 30 | 31 | Details on Assignments: 32 | 33 | Proposal Paper (21 SEPTEMBER 2018) - 34 | * See Proposal.md 35 | 36 | Midterm Update (26 OCTOBER 2018) - 37 | * See MidtermUpdate.md 38 | 39 | Final Project Presentation (30 NOVEMBER 2018 or 7 DECEMBER 2018) - 40 | * An approximately ten minute talk and (if possible) demo of the software 41 | * Include features and technical decisions 42 | 43 | Final Project Paper (7 DECEMBER 2018) - 44 | * See FinalPaper.md 45 | 46 | ## Details on Project Development: 47 | 48 | The goal of this course is to develop a project, from start to finish, using modern software engineering tools and techniques. The final project should be _well-written, well-tested, and well-documented_. 49 | 50 | Unless dictated otherwise by the customer, work should be done using git and GitHub or GitLab. Work should be done in a private repository, and I should be added as a collaborator (username is "laboon" on both sites). Please sign up for a student developer pack (which includes free private repositories, along with other free software) here: https://education.github.com/pack 51 | 52 | Unless dictated otherwise by the customer, the project will be developed using the Agile/Scrum software design methodology. We will discuss this more in class. One of the key tenets is that there is always some "working" version of the software, even if it does not include all of the features. This means that at any point, you should have a working version of the software to show customers (and professors)! 53 | 54 | We will consider every other class meeting the end of each sprint. During this time, we will spend some time doing a retrospective in your groups - meeting for twenty minutes or so, in-person, to determine what went well with the last sprint and what could go better. You will also come up with a plan for the next sprint. Professor Laboon will be available at the end of each lecture to discuss the path forward with each group. 55 | 56 | Since student schedules are often hard to reconcile, I recommend you use a chat application such as Slack to stay in touch with each other, even when you cannot meet in person. 57 | 58 | As this is a capstone course, you are expected to be self-motivated and independent. This may mean learning a new language, framework, architecture, etc. Professional software engineers are often expected to learn these things independently, and you should be prepared to do so as well. If you are unfamiliar with where to find training materials or information for a particular subject, you may discuss it with the instructor, but the onus is entirely on you to learn anything additional you need to know to complete the project. 59 | -------------------------------------------------------------------------------- /deliverables/FinalPaper.md: -------------------------------------------------------------------------------- 1 | # CS CAPSTONE 2 | Fall Semester 2018 3 | 4 | ## DUE DATE: FRIDAY 7 DECEMBER 2018 5 | 6 | ## FINAL PAPER 7 | 8 | This final paper is required for all students in the Capstone, including internship (CS 1900) and research (CS 1950) students. 9 | 10 | ## FORMATTING REQUIREMENTS 11 | 12 | The paper must be 8 - 12 pages in length, double-spaced, using a relatively standard font and point size (e.g., 12-point Times New Roman or Computer Modern). Judicious use of charts, graphs, and/or illustrations is acceptable. Margins should be of standard size. 13 | 14 | Please ensure that your name as well as the name of the project you worked on is listed, along with your faculty advisor (whoever signed your Faculty Learning Agreement, or your research advisor). 15 | 16 | If you had an internship, you must turn in an individual paper; if in a group, please turn in a group paper. 17 | 18 | ## DETAILS 19 | 20 | The final paper should describe what you did for the capstone, and how you did it. This will obviously vary dramatically based on if you did a research project, a Project Studio project, an internship, etc. Thus, it is difficult to give a broad-enough description of what is required for all of these. Consider the following as a list of possible topics to discuss, not as a checklist. 21 | 22 | 1. What programming language did you use? Why? 23 | 2. Were there things about the choice of language you liked? Disliked? 24 | 3. What frameworks did you use? 25 | 4. How did you handle clarifying requirements? 26 | 5. What technical problems did you face? 27 | 6. How did you ensure quality code? 28 | 7. What kind of testing did you do? 29 | 8. What was the development process like? 30 | 9. How did you communicate with other developers/testers/customers/etc? 31 | 10. Did you have non-technical problems that you had to face? 32 | 11. What were the biggest challenges you faced during the capstone? 33 | 12. Were you able to take what you learned during the capstone and apply it to classes? Conversely, were you able to use what you learned in class for the capstone project? 34 | 13. How did you design the software you were writing? 35 | 14. Did you present the project to customers? How did you plan for it? 36 | 15. What was day-to-day life like? 37 | 16. Did you have a mentor? What did they teach you? 38 | 17. What was the worst part of the capstone project? 39 | 18. How did you deal with ambiguity in requirements or direction? 40 | 19. Did you learn any interesting skills during the capstone project? 41 | 42 | In general, what I would like to see is a good understanding of what you did, and what you learned, doing the work for the capstone. If you worked on anything sensitive (e.g., for a government contractor or private data for a company), you do not need to refer to it in your write-up. If there is any doubt, you may wish to show your supervisor the paper so that they may review it before turning it in. 43 | 44 | ## Other 45 | 46 | Please feel free to email me or come to office hours to discuss any problems you have. -------------------------------------------------------------------------------- /deliverables/MidtermUpdate.md: -------------------------------------------------------------------------------- 1 | # CS CAPSTONE 2 | Fall Semester 2018 3 | 4 | ## DUE DATE: FRIDAY 26 OCTOBER 2018 5 | 6 | ## MIDTERM UPDATE PAPER 7 | 8 | This proposal paper is required for all students in the *project* sections of the Capstone (CS1980, CS1981, CS1640, BIOSC 1640) 9 | 10 | It is not required for students in the internship or research sections (CS1900, CS1950). 11 | 12 | ## FORMATTING REQUIREMENTS 13 | 14 | The paper must be 3 pages or more in length, using a relatively standard font and point size (e.g., 12-point Times New Roman or Computer Modern). Judicious use of charts, graphs, and/or illustrations is encouraged, especially if it helps me to understand the . Margins should be of standard size (1" or less). 15 | 16 | Please ensure that your name as well as the name of the project you worked on is listed, along with the name of the customer. 17 | 18 | This is a group project - only one proposal paper is expected from each group. 19 | 20 | ## DETAILS 21 | 22 | This update should include an assessment of the current status of the project, what has been changed since the initial proposal, and what is expected for the rest of the term. 23 | 24 | Here are some example questions I would like to see answered. This does not mean that you need answer all of them, or even any of them, but I would recommend that you think about all of them now and discuss them with your group. 25 | 26 | 1. What is the general status of the project? Are you on track to complete it? 27 | 2. Are there any features/user stories that you have needed to add/remove since the Proposal? 28 | 3. Have you made any changes to your _process_ since the proposal? 29 | 4. What parts of the software development process are working _well_? Which ones are working _poorly_? 30 | 5. What are major risks to the project? 31 | 6. What questions are still outstanding about the project? 32 | 7. Do you need to make any further "course adjustments"? 33 | 8. What kinds of trade-offs are you making? How are you determining priority? 34 | 9. What are the major issues that you have been experiencing? 35 | 10. What has been _easier_ than you thought? 36 | 37 | ## Other 38 | 39 | Please feel free to email me or come to office hours to discuss any problems you have. -------------------------------------------------------------------------------- /deliverables/Presentation.md: -------------------------------------------------------------------------------- 1 | # CS CAPSTONE 2 | Fall Semester 2018 3 | 4 | ## Project Students (CS1980/CS1981/CS1640/BIOSC1640) 5 | 6 | Your presentation will be approximately 10 minutes. This presentation should generally include a demo of the software on which you worked. 7 | 8 | ## Internship / Research Students (CS1900/CS1950) 9 | 10 | Your presentation will be 5 to 10 minutes. 11 | 12 | You can choose a _preferred_ date by creating an _issue_ on the class GitHub repo ( https://github.com/laboon/Capstone_Fall2018 ). Note that this is a _preferred_, not _guaranteed_ date. I will do my best to put any student who asks for a specific date on that date on a first-come, first-served basis. 13 | 14 | Instructions for selecting a preferred date or dates: 15 | 16 | 1. If you do not have one, create a GitHub account. This is free. You may want to sign up for the student education pack (which is also free). It contains lots of free tech goodies. https://education.github.com/ 17 | 2. Go to the class repo: https://github.com/laboon/Capstone_Spring2018 18 | 3. Click on the "Issues" tab 19 | 4. Click the green "New Issue" button 20 | 5. The title textbox should contain your full name (e.g., "Bill Laboon") 21 | 6. The comment textbox should contain which date you would like to give your presentation. You may list several dates (up to three) listed in preferential order (i.e., the first date is the date you would most like to go). 22 | 7. Click the green "Submit New Issue" button 23 | 8. You may verify that your request was submitted by clicking on the "Issues" tab of the repo and seeing your name 24 | 9. I will assign your date before class starts on 8 September. I will close your issue, if you have created an issue, at that time. Final dates will be displayed in the file presentation_schedule.md in the root directory of the repository. 25 | 26 | Presentation dates are listed in the class repository by the beginning of class. Since the first presentation date is 19 January, this will give you at _least_ one week to prepare. If you are concerned about going this early, make sure to select a different date ASAP. 27 | -------------------------------------------------------------------------------- /deliverables/Proposal.md: -------------------------------------------------------------------------------- 1 | # CS CAPSTONE 2 | Fall Semester 2018 3 | 4 | ## DUE DATE: FRIDAY 21 SEPTEMBER 2018 5 | 6 | ## PROPOSAL PAPER 7 | 8 | This proposal paper is required for all students in the *project* sections of the Capstone (CS1980, CS1981, CS1640, BIOSC 1640) 9 | 10 | It is not required for students in the internship or research sections (CS1900, CS1950). 11 | 12 | ## FORMATTING REQUIREMENTS 13 | 14 | The paper must be 4 pages or more in length, using a relatively standard font and point size (e.g., 12-point Times New Roman or Computer Modern). Judicious use of charts, graphs, and/or illustrations is encouraged, especially if it helps me to udnerstand the . Margins should be of standard size (1" or less). 15 | 16 | Please ensure that your name as well as the name of the project you worked on is listed, along with the name of the customer. 17 | 18 | This is a group project - only one proposal paper is expected from each group. 19 | 20 | ## DETAILS 21 | 22 | In general, what I would like to see is a good understanding of what you are planning to do, why, and how. This may also include division of labor (for example, if one student is going to focus on quality assurance and two others on development, or one student is going to focus on documentation, etc.) All of this is subject to change as the semester goes on! 23 | 24 | Here are some example questions I would like to see answered. This does not mean that you need answer all of them, but I would recommend that you think about all of them now so you are not blindsided later. 25 | 26 | 1. How will you communicate? 27 | 2. What language will you use and why? 28 | 3. What frameworks did you use? 29 | 4. How will you test it? 30 | 5. What kind of architectural design will you use? 31 | 6. How will you be grouping the system into pieces of functionality or by subsystem? 32 | 7. What additional tools do you think you need? 33 | 8. What do you foresee as possible issues? 34 | 9. What systems will thus run on (OS X, Windows, Linux, etc) 35 | 10. How often and how will you meet with the customer? 36 | 37 | You are *required* to have a prioritized list of user stories that you will be working on. This list is subject to change but I want to see that you have at least put some thought into what will be required when developing the system. 38 | 39 | ## Other 40 | 41 | Please feel free to email me or come to office hours to discuss any problems you have. -------------------------------------------------------------------------------- /lectures/Capstone_Lecture1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laboon/Capstone_Fall2018/1b787747999a88a871e84a038f3185f7f670f1dd/lectures/Capstone_Lecture1.pdf -------------------------------------------------------------------------------- /lectures/Capstone_Lecture2_RequirementsElicitation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laboon/Capstone_Fall2018/1b787747999a88a871e84a038f3185f7f670f1dd/lectures/Capstone_Lecture2_RequirementsElicitation.pdf -------------------------------------------------------------------------------- /lectures/Capstone_Lecture3_RetrospectivesSprintPlanning.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laboon/Capstone_Fall2018/1b787747999a88a871e84a038f3185f7f670f1dd/lectures/Capstone_Lecture3_RetrospectivesSprintPlanning.pdf -------------------------------------------------------------------------------- /presentation_schedule.md: -------------------------------------------------------------------------------- 1 | # Presentation Schedule 2 | 3 | ## 7 SEP (INTERNSHIP PRESENTATIONS ONLY) 4 | - Michael Schropp * 5 | - Robert Rozin * 6 | - Chris Zuis * 7 | - Kristiana Mitchell * 8 | - Kirtan Sakariya * 9 | - Jack Toth * 10 | - Zhen Yu Ding * 11 | - Hannah Reiling * 12 | 13 | ## 14 SEP (INTERNSHIP PRESENTATIONS ONLY) 14 | - Sai Konduru * 15 | - Ryan Killen * 16 | - Marcus Dubreuil * 17 | - Sara Pike * 18 | - Trevor Buchan * 19 | - Andrew McLaren * 20 | - Fred Erlenbusch * 21 | 22 | ## 21 SEP (INTERNSHIP PRESENTATIONS ONLY) 23 | - Benjamin Aston * 24 | - Alexander Stewart * 25 | - Abbas Ahmed * 26 | - Kyle Hartenstein * 27 | - Joshua Zinkovsky * 28 | - Katherine Kairis * 29 | - Alec Magnani * 30 | - Hassan Syed * 31 | 32 | ## 28 SEP (INTERNSHIP PRESENTATIONS ONLY) 33 | - Andrew Puglionesi * 34 | - Jenni Faust * 35 | - Drew Kozak * 36 | - Tyler Handerhan and Brandon Badger * 37 | - Zack Hable * 38 | - Allen Poon * 39 | - Audrey Ho * 40 | 41 | ## 5 OCT (INTERNSHIP PRESENTATIONS ONLY) 42 | - Tyler Bobik * 43 | - Brian Choromanski * 44 | - Eric Hunzeker * 45 | - Josh Rodstein * 46 | - Adam Farabaugh * 47 | - Jameson Webb * 48 | - Justin Budd * 49 | 50 | ## 12 OCT (INTERNSHIP PRESENTATIONS ONLY) 51 | - Yarden Dvir * 52 | - Roisin O'Dowd * 53 | - Erik Dash * 54 | - Jake Himes * 55 | - Tammy Ma * 56 | - Mathew Ciraula * 57 | - Joseph Monaco * 58 | - Chihao Sun * 59 | 60 | ## 19 OCT (INTERNSHIP PRESENTATIONS ONLY) 61 | - Christian Brill * 62 | - Mohit Jain * 63 | - Adriena Cribb * 64 | - Mack Moynihan * 65 | 66 | ## 26 OCT (INTERNSHIP PRESENTATIONS ONLY) 67 | - Zhisheng Xu * 68 | - Adam Foulke * 69 | - Micah Anthony * 70 | - Ben Runco * 71 | - Michael Korst * 72 | - Joshua Maciak * 73 | - Devin Dang * 74 | - Luis Taylor * 75 | 76 | ## 2 NOV (INTERNSHIP PRESENTATIONS ONLY) 77 | - Bin Dong * 78 | - Joe Kovalik-Haas * 79 | - Madihah Shaik * 80 | - Connie Suh * 81 | - Tomasz Swierzewski * 82 | - Jordan Carr * 83 | - James Hahn * 84 | 85 | ## 9 NOV (INTERNSHIP PRESENTATIONS ONLY) 86 | - Paul Elder * 87 | - Mathew Hoesch * 88 | - David Rowan * 89 | - Ryan Curran * 90 | - Andrew Lobos * 91 | 92 | ## 16 NOV (INTERNSHIP PRESENTATIONS ONLY) 93 | - Yuan Yao * 94 | - Adam Grusky * 95 | - Michael Hoesch * 96 | - Nathan Ackerman * 97 | - Alex Drizos * 98 | - Mitchell Leng * 99 | - Craig Martin * 100 | - William Kelly * 101 | 102 | ## NO PRESENTATIONS ON 23 NOV - HAPPY THANKSGIVING 103 | 104 | ## 30 NOV (PROJECT PRESENTATIONS) 105 | - David Brush * 106 | - Josh Gulden * 107 | - Hailey Innocenzo * 108 | - Sravanthi Chintakuta * 109 | - Matthew Tschippert * 110 | - Chris Wood * 111 | 112 | ### Project Presentation 113 | 114 | 1. QUACC * 115 | 2. Sterile Compounding * 116 | 3. Cancer Database * 117 | 4. A Comparative Study of Approaches for Predicting Patient’s Outcome * 118 | 5. Sheep and Goat Tracker * 119 | 120 | 121 | ## 7 DEC (PROJECT PRESENTATIONS) 122 | - Tim Seaman * 123 | - Maya Lemmon-Kishi * 124 | - Ben Miller * 125 | - Matthew Goetz * 126 | - Emery Chew * 127 | - Lucas Brennan * 128 | - Hayden Gill * 129 | - Shantanu Vyas * 130 | - David Dimond * 131 | - Pavel Braginsky * 132 | 133 | ### Project Presentation 134 | 135 | 1. Nortic * 136 | 2. Bombardier * 137 | 3. NetApp * 138 | 4. Civic App * 139 | 5. Healthy Living App * 140 | -------------------------------------------------------------------------------- /project_assignments.md: -------------------------------------------------------------------------------- 1 | # Project Assignments 2 | 3 | ## NetApp 4 | - Taimah Williams 5 | - Matthew Duing 6 | - George Anthony Villacres 7 | - Ziran Cao 8 | 9 | ## General Dynamics / Viz 10 | N/A 11 | 12 | ## Bombardier 13 | - Jay Berdimuratov 14 | - Evan McWilliams 15 | - John Wartonick 16 | 17 | ## Queue Engineering Project for nortic.se 18 | - Anthony Martrano 19 | - Caleb Shultz 20 | - John Kiener 21 | 22 | ## Impact of Artifact Evaluation on CS Scholarly Work 23 | N/A 24 | 25 | ## A Comparative Study of Approaches for Predicting Patient’s Outcome 26 | - Dan Shirer 27 | 28 | ## Cancer Database Evolution on the Cloud 29 | - Abi Paonessa 30 | - Kathryn Blythe 31 | 32 | ## QuACC: QUality Analysis of Cryptocurrency Codebases 33 | - Anton Ozaeta 34 | - Alexander Ritov 35 | (Non-1950 students): Mike Okonski, Jamie Min, Chris Zuis 36 | 37 | ## Segregating Private from Non-Private Data in A Web Service 38 | - Pavel Braginsky 39 | 40 | ## Sterile Compounding Augmented Reality 41 | - Spencer Young 42 | - James Finkel 43 | 44 | ## Pitt Civics Mobile App 45 | - Senjun (Justin) Fan 46 | - Kevin Krause 47 | 48 | ## CampusGruv 49 | N/A 50 | 51 | ## Healthy Living App 52 | - Alex McCafferty 53 | - Josh Koshy 54 | 55 | ## Sheep and Goat Tracker 56 | - Richard Fulop 57 | - Oliver Fleischmann 58 | -------------------------------------------------------------------------------- /project_list.md: -------------------------------------------------------------------------------- 1 | # Project List 2 | 3 | Please file your top THREE choices as an issue (will go over in class) by Wednesday () morning at 11:59 AM (i.e., right before noon). Please list them in the order that you prefer them. You will be informed as to your project during the next Capstone class on Friday 8 Sep. If you do not file an issue by then, I will assume you do not care which project you are on and I will place uncommitted students on whichever projects still need people. 4 | 5 | REMEMBER TO ADD "PROJECT" TO THE BEGINNING OF YOUR ISSUE TITLE! 6 | 7 | Along with your selections, please include any qualifications or specific reasons for interest that you have for those specific projects. Remember that you are "interviewing" for the project against others, especially if you have selected popular projects. Students who respond early also show enthusiasm for the projects, which goes a long way to showing that they actually want to do them. 8 | 9 | I will attempt to place you in one of your top three choices. Last semester, every student got into one of their top three (and a majority into their #1 choice), although I do not make any guarantees. 10 | 11 | Note: Some of you may be working on private projects. Please file an issue on this repository (as above) but note that you have already been assigned to a project. List the project and the name of the POC (e.g. faculty member or supervisor). If we have not discussed you being placed on a private project, do not put yourself on one. 12 | 13 | ## Industry 14 | 15 | ### NetApp 16 | 17 | In application development, RESTful APIs are an increasingly popular method of 18 | exposing functionality to users. This popularity has led to an effort known as the OpenAPI 19 | Initiative, which has formed to standardize how REST APIs are described and documented. 20 | Developers at NetApp have designed a RESTful API for our proprietary operating 21 | system known as ONTAP. Our API specification is in accordance with the OpenAPI standards, 22 | which allows others to more easily read, explore, test, and consume our API. This, in turn, makes 23 | it simple for anyone to develop applications and scripts that are built on ONTAP! 24 | These aren’t the only benefits of adopting the OpenAPI standard—doing so also brings a 25 | large ecosystem of tools built around OpenAPI. For this Capstone project, NetApp is looking to 26 | leverage the code-generating tool known as Swagger-Codegen. This tool can take any API 27 | specification written according to the OpenAPI standard and procedurally generate code 28 | designed for any number of purposes and written in any number of different programming 29 | languages. 30 | 31 | In this project, students will work with the Swagger-Codegen tool to generate an API 32 | client library for Python. This procedurally-generated library will enable simple management of 33 | Data ONTAP with Python. Over the course of this Capstone project, students will utilize several different 34 | programming languages and concepts, including: 35 | 36 | * Working with HTTP to interact with RESTful software applications. 37 | * Writing in Java to extend the Swagger-Codegen tool to utilize the unique functionality of the 38 | ONTAP REST APIs. 39 | * Implementing object-oriented coding principles to design abstract templates used for 40 | procedural code generation. 41 | * Leveraging the strengths of the Python programming language and the functionality of the 42 | ONTAP API to create a new Python library to be used by developers here at NetApp! 43 | 44 | (POC: Tim Banyas, Software Engineering Manager, NetApp) 45 | 46 | ### General Dynamics / Viz 47 | 48 | Lightweight Open Web Analysis 49 | 50 | Most web analysis systems are proprietary and heavyweight, meaning that most of their algorithms is hidden and unable to be validated. It leads to a misunderstanding of the answers. 51 | 52 | This project proposes to develop a lightweight open system that does web analysis in the most straightforward and modular way. It will not hide the implementation and make it available for understanding. It will be able to be selected as needed and not the heavy-weight requirements. This will be used not only for proper validation, but also as a platform to make web analytics more inclusive. It should allow for the processing of data without an integration of required hooks that forces users to be locked in simply because of the effort needed to change. 53 | 54 | The application should be developed to provide reusable components that can be used in many types of web analysis as well as other forms of analytics. 55 | 56 | (POC: Mike Bigrigg, General Dynamics Viz and University of Pittsburgh, Computer Science) 57 | 58 | ### Bombardier 59 | 60 | Bombardier’s Communication Based Train Control System (CBTC) – CITYFLO650, utilizes an offline data capture tool to view system performance. The tool is used to visualize the state of all objects in the system as they occur in real time, in a playback mode in real and x2,x4,x8 timescales. Currently there are 38+ projects world-wide, generating data daily. 61 | 62 | The purpose of this project is to create a more modern tool chain to visualize this data, and prepare it for analysis by site personnel. The tool chain should enable rapid site geographic creation, intuitive visualization of site conditions, and above all meet reliability metrics for visualizing data from Safety Related Software Subsystems. Existing tool chain that is used for visualizing diagnostic data is VB6, and while very stable, requires virtualization in order to run on modern computing systems. Data format and logging is very stable, so the visualization tool is allowed to change as availability of items on the market change. 63 | 64 | This project is to propose and deliver a functional prototype using a more modern tool set (e.g. Unity, Android, iOS SDK, .net, Java) to allow for the parsing of this data and display in the same manner of the existing set of projects. Finally, as systems grow in geographic size, the ability to scale and represent this data in a meaningful way will need to be evaluated and discussed. 65 | 66 | **NOTE: NDA and/or IP agreement will need to be signed for this project** 67 | 68 | (POC: Muneeb Alvi, Bombardier) 69 | 70 | ### Queue Engineering Project for nortic.se 71 | 72 | **NOTE: This project will be done in conjunction with students from Blekinge Tekniska Högskola, Blekinge, Sweden** 73 | 74 | The customer is a local company in south of Sweden, http://nortic.se/, they are selling tickets to different events small and big. 75 | 76 | For a popular event there is high demand for tickets, and once all the tickets are sold the “black” market will pop-up where tickets are sold between private persons instead through the company. To prevent one buyer to buy all the tickets and then sell them for a higher price, a limit is set for how many tickets you can buy. To control this and have a fair system a queue is used. 77 | 78 | However, this queue can be hacked and users may “cut in line”, and then the system will be unfair. 79 | 80 | This project intends to build a queue that is safe and fair on order to manage online ticket purchases. 81 | 82 | The project teams will in cooperation with the customer detail the requirements, propose solutions, design, implement and test the system and by the end providing the customer with a functioning queuing system. 83 | 84 | (POC: Nina Dzamashvili Fogelström, Department of Software Engineering, Blekinge Tekniska Högskola) 85 | 86 | ## CS Faculty Projects 87 | 88 | ### Impact of Artifact Evaluation on CS Scholarly Work 89 | 90 | **NOTE: This may involve switching your class number from CS1980 to CS1950. It will still count for your capstone.** 91 | 92 | Many areas of computer science rely almost entirely on empirical evaluation that uses software, data sets, benchmarks, scripts, and a myriad of other artifacts to evaluate new ideas and compare with past innovation. This project aims to study the effectiveness of Artifact Evaluation (AE) in improving the quality of the software tools and methodologies underlying experiments in scholarly publications. The student will survey the ACM Digital Library for conferences in the last 5 years that have carried out AE, gather bibliography information and associated metrics (e.g., citation counts), create relational and graph databases for the information, conduct queries on the information to statistically analyze the data, and produce graphs of the results and make them public accessible on the web. 93 | 94 | Required Skills and profiles 95 | 96 | * Analytical skills 97 | 98 | * Strong programming skills 99 | 100 | * Background in MySQL and neo4j desirable 101 | 102 | (POC Supervisors: Bruce Childers and Panos K. Chrysanthis) 103 | 104 | ### A Comparative Study of Approaches for Predicting Patient’s Outcome 105 | 106 | **NOTE: This may involve switching your class number from CS1980 to CS1950. It will still count for your capstone.** 107 | 108 | Gene expression sequencing techniques give the ability for scientists to analyze the genetic makeup of different individuals and the molecular mechanisms related to a disease or phenotype. When combined with clinical data such as demographics, disease state, or clinical tests, this data allows for a comprehensive analysis of how genetics cause our health conditions or outcomes. One issue complicating this analysis is the sheer size of the human genome, which makes more complicated analysis algorithms unable to handle the full gene expression dataset. Built upon the Preferential Diversity scheme, we have established a computational methodology to select a subset of important genes for a particular study and disease of interest, that we use for downstream analysis of cause and effect relationships between genes and clinical outcomes. For this project, a student will apply our methodology to publicly available expression data, and compare our approach with other algorithms suitable for these analyses in both ability to predict a patient’s outcome as well as the ability to learn interesting information from the dataset. 109 | 110 | Required Skills and profiles 111 | 112 | * Analytical skills 113 | 114 | * Strong programming skills 115 | 116 | * Background in AI/ML/DB desirable 117 | 118 | (POC: Dr. Panos Chrystanthis, Computer Science department) 119 | 120 | ### Cancer Database Evolution on the Cloud 121 | 122 | **NOTE: This may involve switching your class number from CS1980 to CS1950. It will still count for your capstone.** 123 | 124 | UPMC Hillman Cancer Center is conducting a Specialized Program of Research Excellence (SPORE) in Skin Cancer. The overall goals of the SPORE are to improve our understanding of molecular and immunologic mechanisms of cancer progression and response to immunotherapy and to validate prognostic and predictive biomarkers for personalized treatment. To this end, large amounts of clinical and genomics data from several sources must be organized and maintained in a way that allows for efficient and secure access as well as user friendly interactions (add, search, select) with the underlying data. In this project, a student will extend the database of the cBioPortal with the data types being generated by the Pittsburgh SPORE Melanoma project. This will be a combined web application and database project with the focus being on usability and security of the database system. 125 | 126 | Required Skills and profiles 127 | 128 | * Database/SQL skills 129 | 130 | * Strong programming skills 131 | 132 | * Background in AWS desirable 133 | 134 | (POC: Dr. Panos Chrystanthis, Computer Science department) 135 | 136 | ### QuACC: QUality Analysis of Cryptocurrency Codebases 137 | 138 | While cryptocurrency is a burgeoning field at the moment, many projects are of poor quality or are not well-tested. QuACC performs automated analysis of various cryptocurrency codebases (currently, Bitcoin, Ethereum, Bitcoin Cash, Monero, and Litecoin). Knowledge of Python, C, C++, and/or static analysis is helpful. Previous knowledge of cryptocurrency and blockchain technology is not strictly necessary but interest in it is essential. 139 | 140 | (POC: Bill Laboon, Computer Science department) 141 | 142 | ### Segregating Private from Non-Private Data in A Web Service 143 | 144 | **NOTE: This may involve switching your class number from CS1980 to CS1950. It will still count for your capstone.** 145 | 146 | The project involves adding user privacy to social media and data sharing services through the use of encryption and hardware protection mechanisms based on Intel's SGX processor extensions. The research angle is looking at how to separate private vs. non-private data in a hosted web service, and protect private data through the use of encryption performed on a client (or 3rd party) hosted proxy service. The privacy protections allow users to access and share personal data and content with other users of the system, while preventing the hosting service itself from being able to access data that the users do not wish to make available. The project would involve working with the Flask, Bootstrap and React frameworks as well as optionally working with C in an embedded environment. 147 | 148 | (POC: Dr. Jack Lange, Computer Science department) 149 | 150 | ## Non-CS Faculty Projects 151 | 152 | ### Sterile Compounding Augmented Reality 153 | 154 | Training in sterile compounding is a component of pharmacy education and training across the country. Similarly, training for appropriate hand washing required to enter surgical environments are required of medical students. The resources required for this training can be prohibitive due to the time, personnel, and space requirements. Coordinating the resources, trainee experiences, and feedback required in appropriate training is a universal problem for schools, hospitals, and institutions that provide customized pharmacy sterile compounding and surgical procedures in healthcare. Our solution is to create an augmented reality platform to train users in simulated clinical environments using custom hardware controllers and software to model and teach clinical procedures and concepts. See Summary Video for Prototype and past student experiences - http://bit.ly/araug2018. Experience in Unity, Tensor Flow, and machine learning is ideal. Students without experience in these area will be expected (and can look to benefit from) extensive self-directed learning as it directly applied to the project. End of any project should have working coding+documentation, additionally: 155 | 1. Hosted/working demonstration of working code; e.g website, exe file, Unity file, etc OR 156 | 2. Video (youtube/screencast) walkthrough of working code to address user needs (POC: Dr. Ravi Patel, School of Pharmacy) 157 | 158 | ### Pitt Civics Mobile App 159 | 160 | Pitt Civics is a collaborative coalition of civic-minded Pitt students, staff, and faculty that strives to generate accessible pathways for civic growth for Pitt students. We seek creative student mobile developers to help us develop a gamified virtual civic learning platform—embracing civic competencies across academic disciplines—that is intended for and open to all Pitt students, and includes content modules dedicated to historic and modern understandings of democratic values, capacities to engage diverse perspectives and people, and commitment to collective civic problem solving. **NDA or IP agreement may be required** (POC: Ron Idoko, University of Pittsburgh Public Service program) 161 | 162 | ### CampusGruv 163 | 164 | CampusGruv is a campus community engagement app composed of a network of visually engaging 'campusfeeds' that allow for more dynamic interaction between the members - students, alumni, faculty, staff, local businesses, etc. - of respective campus communities. We are currently seeking creative student developers interested in assessing and redesigning elements our iOS platform. **NDA or IP agreement may be required** (POC: Ron Idoko, University of Pittsburgh Public Service program) 165 | 166 | ### Healthy Living App 167 | 168 | **NOTE: This project may require signing an NDA or IP agreement** 169 | 170 | **NOTE: This project will be done as part of a group with Information Science students** 171 | 172 | This semester we are seeking students to develop a working prototype for a Healthy Living mobile application. Students selected for this team-based project will work directly with a business analyst and the key stakeholder, Dr. Jackic, Director of the Healthy Living Institute at PITT. Some of the key features of the application require a user to: 173 | 174 | * Track caloric intake 175 | 176 | * Supply nutritional information on foods 177 | 178 | * Create a recipe bank 179 | 180 | * Provide instructional videos for exercise 181 | 182 | * Show progress through weight-based graphs 183 | 184 | * Establish a one/one health coach connection 185 | 186 | There are a few openings available on the team for students with skills either in front-end design, web server management, and database management. The team will consist of no more than 5-6 students (including both CS and IS students). 187 | 188 | (POC: Leona Mitchell, Information Science department) 189 | 190 | ### Sheep and Goat Tracker 191 | 192 | An app to track all information pertaining to a sheep and goat production enterprise: breeding, birthing, weighing, scoring, treating, etc. An app that can make calculations to convert raw data into performance data. For example, to compare weaning weights of lambs and kids, all weights have to be adjusted to a common age. They also have to be adjusted for the sex of the lamb/kid, its type of birth and rearing (single, twin, or triplet), and the age of its dam. It is desirable to convert many performance measures to ratios for easier comparison. It is desirable to be able to summarize information from multiple years and to calculate whole flock/herd statistics. 193 | 194 | An proof-of-concept application was made for this in Spring semester using Ruby on Rails. This would continue development of that proof-of-concept to add additional features, improve quality, etc. (POC: Susan Schoenian, Sheep & Goat Specialist, University of Maryland) 195 | -------------------------------------------------------------------------------- /syllabus.md: -------------------------------------------------------------------------------- 1 | # Capstone Syllabus - Fall 2018 2 | 3 | _Although the instructor will make a best effort to have the class topic on the day listed, occasionally a change must be made (e.g., a lecture going long, or a guest lecturer unable to make it to class that day). However, these are the topics that will be covered and the expected date that they will be taught._ 4 | 5 | # 31 AUG 6 | 7 | * Introduction 8 | 9 | * Project Students: Project Selection 10 | 11 | ## 7 SEP 12 | 13 | * Internship presentations 14 | 15 | * Project Students 16 | * Project begins! 17 | * LECTURE: The Agile/Scrum Process 18 | 19 | ## 14 SEP 20 | 21 | * Internship presentations 22 | 23 | * Project Students 24 | * LECTURE: Requirements Elicitation 25 | 26 | ## 21 SEP 27 | 28 | * Internship presentations 29 | 30 | * Project Students 31 | * LECTURE: Intro to Retrospectives 32 | * Project proposal due (one per group) 33 | * Retrospective 1 34 | 35 | ## 28 SEP 36 | 37 | * Internship presentations 38 | 39 | * Project Students 40 | * Meeting time 41 | 42 | ## 5 OCT 43 | 44 | * Internship presentations 45 | 46 | * Project Students 47 | * Retrospective 2 48 | 49 | 50 | ## 12 OCT 51 | 52 | * Internship presentations 53 | 54 | * Project Students 55 | * Meeting Time 56 | 57 | ## 19 OCT 58 | 59 | * Internship presentations 60 | 61 | * Project Students 62 | * Retrospective 3 63 | 64 | ## 26 OCT 65 | 66 | * Internship presentations 67 | 68 | * Project Students 69 | * Meeting time 70 | * Mid-term update due 71 | 72 | ## 2 NOV 73 | 74 | * Internship presentations 75 | 76 | * Project Students 77 | * Retrospective 4 78 | 79 | ## 9 NOV 80 | 81 | * Internship presentations 82 | 83 | * Project Students 84 | * Meeting time 85 | 86 | ## 16 NOV 87 | 88 | * Internship presentations 89 | 90 | * Project Students 91 | * Retrospective 5 92 | 93 | ## 23 NOV - NO CLASS 94 | 95 | ## 30 NOV 96 | 97 | * Project presentations 98 | 99 | ## 7 DEC 100 | 101 | **ALL STUDENTS: FINAL PAPERS DUE** 102 | 103 | * Project presentations 104 | --------------------------------------------------------------------------------