Foundations of Software Science
Fall 2018
NC State
Computer Science
Tuesdays, Thursdays, 4:30pm
Prof. Tim Menzies
Most software companies now learn their policies via data-driven methods. Modern practitioners treat every planned feature as an experiment, of which only a few are expected to survive. Key performance metrics are carefully monitored and analyzed to judge the progress of a feature. Even simple design decisions such as the color of a link are chosen by the outcome of software experiments.
Graduates of this class will becomes producers, not mere consumers, of AI software.
This subject will explore methods for generating and using models built from data (i.e. how to collectthat data; exploring that data; then presenting that data in such a way to support business-level decision making for software projects).
For more admin details, see the syllabus.
Why?
Facetiously, I'll say this subject asks: "If deep learning is the answer, what was the question?".
In this subject, we ask "what kind of learners do we need?" then work backwards from there to design new AI methods, or improve existing ones.
This is an important task since the following is a very pressing issue:
- The future of SE is more and more AI.
- But AI software is still software;
- So as society uses more AI, SE folks will be required to use and maintain and extend that software;
- So how should SE people look at AI software?
- What should they expect from that software?
- What would be an AI software "bad smells" that prompts a code reorganization?
Enter this subject.
What?
How to teach software how to be a scientist
In short, we will teach software how to a scientist; i.e. how to automatically build, critique, and revise models. How to build and modify and refactor and remix and repurpose:
- Software for data miners;
- Software for optimizers;
- Software for theorem provers.
- To help society, and our customers, achieve their dreams better, faster, and cheaper.
How to achieve maximum AI benefits at minimal AI costs:
- By recognize and modify bias in learners.
- By reducing the CPU and memory footprints of AI;
- By respecting the privacy of citizens in a society shared with AI.
How?
Monthly:
Can you do better than last year's high water mark? A 500 to 1000-fold speed up of a text miner?
- August = Start-up
- September = Data mining
- October = Optimizers and theorem provers
- November = Your do your own big project that utilizes the tools and perspectivs of this sibject.
Weekly (till mid-October):
- Small, simple programming assignments
- Regular poster presentations by students on some tiny aspect of AI+SE
For full details, see the syllabus.