Given below are some areas that have overlaps with internal projects that you'll be working in CS3282. Picking these will have the advantage that your work in the internal projects can increase your expertise in the chosen areas (i.e. your work in CS3282 can help you earn more credit in CS3281).
Here are the main languages used in the three projects (PL
: PowerPointLabs, SE
: SE-EDU, TM
: TEAMMATES).
Language | Projects |
---|---|
Java | SE , TM |
HTML | TM |
CSS | TM |
JavaScript | TM |
C# | PL |
The aspects, tools, topics given below can help you to pick an aspect and a topic to study.
- Static analysis
- Checkstyle
TM
SE
- Codacy
SE
- ESLint
TM
- FindBugs
TM
SE
- PMD
TM
SE
- Stylelint
TM
- StyleCop
PL
- Checkstyle
-
Build
- Gradle
TM
SE
- MSBuild
PL
- npm
TM
- Gradle
-
CI
- AppVeyor
SE
PL
- Travis
TM
SE
- AppVeyor
-
Process
- Workflow
TM
SE
PL
- Dev community management
TM
SE
PL
- Release management
TM
SE
PL
- Workflow
-
GUI
- JavaFx, ControlsFx
SE
- Windows Presentation Foundation (WPF), Winform
PL
- JavaFx, ControlsFx
-
Installers
SE
PL
-
Portability
SE
(ensuring the apps can run an all major OS'es)
Generating and maintaining user/developer docs require good writing skills as well and various tools.
- UML
TM
SE
PL
- Document generation
TM
SE
PL
- Jekyll
PL
- Jekyll
This is especially important to TM
because Web apps are vulnerable to all sorts of intermittent faults.
For example, one problem it faces is called 'eventual consistency' where new data requires some time to
propagate through all nodes of the distributed database during which time the app has to deal with data
in an inconsistent state.
- Logging
TM
SE
PL
- Error reporting
TM
SE
PL
- Backup and restore
TM
This affects all three projects:
PL
: Users don't like their PowerPoint to slow down due to our pluginSE
: We want the app to be very fast and to be able to handle lot of data (especially when connected to third party backends such as Google calendar)TM
: 1. It has to deal with spikes in load. 2. Every CPU cycle or byte of data transfer costs us money.
Sub areas:
- Multi-threading
TM
SE
- Profiling
TM
SE
PL
: To find performance bottlenecks - Scalability testing
TM
SE
- Vulnerabilities
TM
: SQL injection, cross site scripting - Access control
TM
-
Code coverage
- Blanket.js
TM
- Coveralls
TM
SE
- EclEmma
TM
SE
- JaCoCo
TM
- MSTest code coverage
PL
- Blanket.js
-
Testing frameworks
- JUnit
SE
- MS Test
PL
- TestNG
TM
- QUnit
TM
- JUnit
-
UI testing
- MS Test
PL
- Selenium
TM
- TestFx
SE
- MS Test
-
Mocking
- Mockito, PowerMock
SE
- Moq
PL
- Mockito, PowerMock
- Usability
TM
SE
PL
- Accessibility
TM
: Some students who accessTM
may have accessibility needs - Responsiveness
TM
: The app can be accessed using a variety of devices
-
Front End frameworks:
- Bootstrap
TM
- JQuery
TM
- Bootstrap
-
Dynamic page generation
- JSP
TM
- JSTL
TM
- JSP
- Google App Engine
TM
- Servlets
TM
- Persistence
- JDO, JPA, GAE DataStore
TM
: - SQLite
SE
: We might use SQLite in higher level address books
- JDO, JPA, GAE DataStore