A discussion of how to do Computer Science well, particularly writing code and architecting program solutions.
Saturday, March 23, 2019
Repost: Code Smells ... Is concurrency natural?
Writing parallel code is not considered easy, but it can be a natural approach to some problems for novices. When a beginner wants something to happen twice concurrently, the reasonable thing would be to do what works once, a second time. Instead, this may conflict with other constructs of the language, such as main() or having to create threads. See more here.
Thursday, March 7, 2019
Talk: Concurrent Data Structures for Non-Volatile Memory
Today, Michal Friedman, gave a talk on Concurrent Data Structures for Non-Volatile Memory.
Future systems will contain non-volatile memory. This is memory that exhibits normal DRAM characteristics, but can maintain its contents even across power failures. In current systems, caches update memory on either evictions and flushes. Flushes, however, impose overhead due to the memory access time and overriding the write-back nature of most caches.
Linearizability is one definition for concurrency governing the observation of the operations. This can be extended to durable linearizability being on a durable system, such that data is flushed before global visibility (initialization), flush prior operations (dependence), and persist operations before they complete (completion). But a further extension is required to know when a sequence of operations are complete, beyond just taking snapshots of the memory state.
Relaxed, durable, and log versions of lock-free queue that extend Michael and Scott's baseline queue implementation. Each version provides stronger guarantees: relaxed are the existing augmented with a sync operation to snapshot state, durable preserves the data structure across failures, log identifies the specific state. The main guarantee is that the data structure will be consistent for any set of thread crashes, which is stronger than the lock-free guarantee.
We do this by extending the prior lock-free versions that include memory flushes of key state, and that later update which see volatile state will flush that state before completing their operations. This meets the durable linearizability. And can be extended by also have a log of operations that are updated and maintained before the operations themselves execute. These logs are per-thread, so as to be unordered and to be individually stateful.
The relaxed version implements sync by creating a special object that indicates a snapshot is occurring. If other concurrent operations find this object, they take over the snapshot and continue persisting the state before completing its own operation. Thus a snapshot does not block other operations, but still occurs at that point in the sequence of operations.
Based on performance measurements, the relaxed performs similar to the baseline implementation, while the durable and log-based implementations run slower than the relaxed but with similar performance.
Finally, TSO provides us a guarantee that the stores will reach the cache line in a desired order and not require flushing between writes.
Saturday, March 2, 2019
Conference Attendance - SIGCSE 2019 - Day 2.5
Continuing at SIGCSE, here are several more paper talks that I attended on Friday. Most of the value at SIGCSE comes from the friendly conversations with other attendees. From 5-11p, I was in the hotel lobby talking with faculty and students. Discussing research ideas, telling our stories from teaching, and generally renewing friendships within the field.
On the Effect of Question Ordering on Performance and Confidence in Computer Science Examinations
On the exams, students were offered a bonus if they could predict their score by within 10%. Does the order of questions (easy -> hard, or hard -> easy) have any impact on their estimated or actual performance on an exam. Students overpredicted by over 10% on the exams. As a whole, the hard to easy students did worse, but this result was not statistically significant. A small improvement is gained for women when the exams start with the hardest problem.
I wonder about whether students were biased in their prediction based on the reward. Ultimately, the authors gave the reward to all students regardless of the quality of their prediction.
The Relationship between Prerequisite Proficiency and Student Performance in an Upper-Division Computing Course
On the Effect of Question Ordering on Performance and Confidence in Computer Science Examinations
On the exams, students were offered a bonus if they could predict their score by within 10%. Does the order of questions (easy -> hard, or hard -> easy) have any impact on their estimated or actual performance on an exam. Students overpredicted by over 10% on the exams. As a whole, the hard to easy students did worse, but this result was not statistically significant. A small improvement is gained for women when the exams start with the hardest problem.
I wonder about whether students were biased in their prediction based on the reward. Ultimately, the authors gave the reward to all students regardless of the quality of their prediction.
The Relationship between Prerequisite Proficiency and Student Performance in an Upper-Division Computing Course
We have prerequisites to ensure that students are prepared for the later course, an upper-level data structures class. Students started on average with 57% of expected prerequisite knowledge, and will finish the course with an improvement of 8% on this knowledge. There is a correlation between prerequisite score and their final score. With several prerequisites, some knowledge concepts has greater correlation than others. Assembly is a surprising example of a concept that relates. Students benefit from intervention that addresses these deficiencies early in the term.
Afterward, we discussed that this work did not explore what prerequisite knowledge weakly correlated with student learning. How might we better understand what prerequisites actually support the learning in a course? Furthermore, can we better understand the general background of students in the course, such as class standing or general experience?
Visualizing Classic Synchronization Problems
Afterward, we discussed that this work did not explore what prerequisite knowledge weakly correlated with student learning. How might we better understand what prerequisites actually support the learning in a course? Furthermore, can we better understand the general background of students in the course, such as class standing or general experience?
Visualizing Classic Synchronization Problems
For three classic synchronization problems: dining philosophers, bounded producer-consumer, and readers and writers. Each one has a window displaying the operations, as well as multiple algorithmic strategies. With these visualizations, do students learn better and also find them more engaging than reading about the problems in the textbook. While not statistically significant, the control group exhibited better recall, although the visualization group had higher engagement. That said, the control group exhibited higher course grades, so the difference in learning may actually be from unrelated factors.
Friday, March 1, 2019
Conference Attendance: SIGCSE 2019 - Day 1.5
Back at SIGCSE again, this one the 50th to be held. Much of my time is spent dashing about and renewing friendships. That said, I made it to several sessions. I've included at least one author and linked to their paper.
Starting on day 2, we begin with the Keynote from Mark Guzdial
"The study of computers and all the phenomena associated with them." (Perlis, Newell, and Simon, 1967). The early uses of Computer Science were proposing its inclusion in education to support all of education (1960s). For example, given the equation "x = x0 + v*t + 1/2 a * t^2", we can also teach it as a algorithm / program. The program then shows the causal relation of the components. Benefiting the learning of other fields by integrating computer science.
Do we have computing for all? Most high school students have no access, nor do they even take the classes when they do.
Computing is a 21st century literacy. What is the core literacy that everyone needs? C.f. K-8 Learning Trajectories Derived from Research Literature: Sequence, Repetition, Conditionals. Our goal is not teaching Computer Science, but rather supporting learning.
For example, let's learn about acoustics. Mark explains the straight physics. Then he brings up a program (in a block-based language) that can display the sound reaching the microphone. So the learning came from the program, demonstration, and prediction. Not from writing and understanding the code itself. Taking data and helping build narratives.
We need to build more, try more, and innovate. To meet our mission, "to provide a global forum for educators to discuss research and practice related to the learning and teaching of computing at all levels."
Now for the papers from day 1:
Lisa Yan - The PyramidSnapshot Challenge
The core problem is that we only view student work by the completed snapshots. Extended Eclipse with a plugin to record every compilation, giving 130,000 snapshots from 2600 students. Into those snapshots, they needed to develop an automated approach to classifying the intermediate snapshots. Tried autograders and abstract syntax trees, but those could not capture the full space. But! The output is an image, so why not try using image classification. Of the 138531 snapshots, they generated 27220 images. Lisa then manually labeled 12000 of those images, into 16 labels that are effectively four milestones in development. Then, a neural network classifier classified the images. Plot the milestones using a spectrum of colors (blue being start, red being perfect). Good students quickly reach the complete milestones. Struggling students are often in early debugging stages. Tinkering students (~73 percentile on exams) take a lot of time, but mostly spend it on later milestones. From these, we can review assignments and whether students are in the declared milestones, or if other assignment structure is required.
For the following three papers, I served as the session chair.
Tyler Greer - On the Effects of Active Learning Environments in Computing Education
Replication study on the impact of using an active learning classroom versus traditional room. Using the same instructor to teach the same course, but using different classrooms and lecture styles (traditional versus peer instruction). The most significant factor was the use of active learning versus traditional, with no clear impact from the type of room used.
Yayjin Ham, Brandon Myers - Supporting Guided Inquiry with Cooperative Learning in Computer Organization
Taking a computer organization course with peer instruction and guided inquiry, can the peer instruction be traded for cooperative learning to emphasize further engagement and learning. Exploration of a model (program, documentation), then concept invention (building an understanding), then application (apply the learned concepts to a new problem). Reflect on the learning at the end of each "lecture". In back-to-back semesters, measure the learning gains from this intervention, as well as survey on other secondary items (such as, engagement and peer support). However, the students in the intervention group did worse, most of which is controlled by the prior GPA. And across the other survey points, students in the intervention group rated lower. The materials used are available online.
Aman, et al - POGIL in Computer Science: Faculty Motivation and Challenges
Faculty try implementing POGIL in the classroom. Start with training, then implementing in the classroom, and continued innovation. Faculty want to see more motivation, retaining the material, and staying in the course (as well as in the program). Students have a mismatch between their learning and their perceived learning. There are many challenges and concerns from faculty about the costs of adoption.
Starting on day 2, we begin with the Keynote from Mark Guzdial
"The study of computers and all the phenomena associated with them." (Perlis, Newell, and Simon, 1967). The early uses of Computer Science were proposing its inclusion in education to support all of education (1960s). For example, given the equation "x = x0 + v*t + 1/2 a * t^2", we can also teach it as a algorithm / program. The program then shows the causal relation of the components. Benefiting the learning of other fields by integrating computer science.
Do we have computing for all? Most high school students have no access, nor do they even take the classes when they do.
Computing is a 21st century literacy. What is the core literacy that everyone needs? C.f. K-8 Learning Trajectories Derived from Research Literature: Sequence, Repetition, Conditionals. Our goal is not teaching Computer Science, but rather supporting learning.
For example, let's learn about acoustics. Mark explains the straight physics. Then he brings up a program (in a block-based language) that can display the sound reaching the microphone. So the learning came from the program, demonstration, and prediction. Not from writing and understanding the code itself. Taking data and helping build narratives.
We need to build more, try more, and innovate. To meet our mission, "to provide a global forum for educators to discuss research and practice related to the learning and teaching of computing at all levels."
Now for the papers from day 1:
Lisa Yan - The PyramidSnapshot Challenge
The core problem is that we only view student work by the completed snapshots. Extended Eclipse with a plugin to record every compilation, giving 130,000 snapshots from 2600 students. Into those snapshots, they needed to develop an automated approach to classifying the intermediate snapshots. Tried autograders and abstract syntax trees, but those could not capture the full space. But! The output is an image, so why not try using image classification. Of the 138531 snapshots, they generated 27220 images. Lisa then manually labeled 12000 of those images, into 16 labels that are effectively four milestones in development. Then, a neural network classifier classified the images. Plot the milestones using a spectrum of colors (blue being start, red being perfect). Good students quickly reach the complete milestones. Struggling students are often in early debugging stages. Tinkering students (~73 percentile on exams) take a lot of time, but mostly spend it on later milestones. From these, we can review assignments and whether students are in the declared milestones, or if other assignment structure is required.
For the following three papers, I served as the session chair.
Tyler Greer - On the Effects of Active Learning Environments in Computing Education
Replication study on the impact of using an active learning classroom versus traditional room. Using the same instructor to teach the same course, but using different classrooms and lecture styles (traditional versus peer instruction). The most significant factor was the use of active learning versus traditional, with no clear impact from the type of room used.
Yayjin Ham, Brandon Myers - Supporting Guided Inquiry with Cooperative Learning in Computer Organization
Taking a computer organization course with peer instruction and guided inquiry, can the peer instruction be traded for cooperative learning to emphasize further engagement and learning. Exploration of a model (program, documentation), then concept invention (building an understanding), then application (apply the learned concepts to a new problem). Reflect on the learning at the end of each "lecture". In back-to-back semesters, measure the learning gains from this intervention, as well as survey on other secondary items (such as, engagement and peer support). However, the students in the intervention group did worse, most of which is controlled by the prior GPA. And across the other survey points, students in the intervention group rated lower. The materials used are available online.
Aman, et al - POGIL in Computer Science: Faculty Motivation and Challenges
Faculty try implementing POGIL in the classroom. Start with training, then implementing in the classroom, and continued innovation. Faculty want to see more motivation, retaining the material, and staying in the course (as well as in the program). Students have a mismatch between their learning and their perceived learning. There are many challenges and concerns from faculty about the costs of adoption.
Thursday, November 29, 2018
Seminar Talk: Computer Science Pedagogy - Miranda Parker
This week I have been co-hosting Miranda Parker, from Georgia Tech, as part of our Colloquium on Computer Science Pedagogy. Her work is titled, Barriers to Computing: What Prevents CS for All.
The question is what are the barriers to accessing Computer Science at the high school level. Nation-wide, ~35% of high schools offer at least one CS course, although this is self-reported CS. In Indiana, the most popular courses are taken by ~5000 students, state-wide. In Austin Texas, about 6000 students take at least one CS course, out of ~110,000.
How do we know if students are successful (i.e., did they learn)?
For this, we need a validated assessment to ensure that we are measuring what we want to measure. An initial assessment, FCS1, worked fairly well and across multiple introductory programming languages; however, the assessment had limits in its use, which lead to the SCS1. This assessment correlated well with FCS1, so it can standin; however, it was an hour long. Assessments should: cover the content, vary in difficulty, and have good discrimination (so individual scores are good predictors for the overall performance). In analysis, most of the SCS1 questions were hard, and few provided good discrimination. The assessment was then adapted to focus on the medium difficulty problems that discriminate (in test scores), and expanded to a 30 minute test.
With a measurement of whether students are succeeding in Computer Science, we can walk back to investigate what things influence students to succeed in Computer Science.
Among prior studying factors, we know that students do better in CS if they have more prior experience with Computer Science, and students do better in CS (as well as STEM and general education) with higher socioeconomic status (SES). There are also known prior links between SES and access to computing (whether it is formal courses, or informally), and SES to spatial reasoning. And both of these later components are linked to CS achievement.
In exploratory study (large, public university with mainly high SES students), showed statistical correlation from spatial reasoning to CS achievement. There was not correlation from having access to achievement. In the interest of time, this point was not presented further.
Barriers to computing
There are three main sources of access to Computer Science courses: state policies, geography (such as, circumstances, industry, or neighboring schools with CS), and resources (such as, time and money or rural versus urban).
In partnership with Georgia Department of Education, CS enrollment data from 2012-2016, plus other public data (such as, characteristics of the county and of the school), for each of the 181 school districts in Georgia, where each district has at least one high school. Using the definition of CS courses, being those that count toward the graduation requirement in Georgia as computer science, versus other computing courses, such as web design or proficiency with office. In Georgia, out of 500,000 students, about 6000 took a CS course in a given year, where about 50% of schools offered computer science during at least one year in that time frame. And the 6000 students are actually student course events, where a student taking two CS courses would count twice.
For those schools, CS enrollment, total high school enrollment, and median income contribute to whether CS will be offered in the next year.
This work is yet ongoing, where the next steps are to visit schools and collect further data on these factors, such as why a school discontinued a course offering, or now offers one. Or what do students these courses go on to do? An audience question wondered whether the CS courses offered relates to the courses offered of other parts of STEM.
The question is what are the barriers to accessing Computer Science at the high school level. Nation-wide, ~35% of high schools offer at least one CS course, although this is self-reported CS. In Indiana, the most popular courses are taken by ~5000 students, state-wide. In Austin Texas, about 6000 students take at least one CS course, out of ~110,000.
How do we know if students are successful (i.e., did they learn)?
For this, we need a validated assessment to ensure that we are measuring what we want to measure. An initial assessment, FCS1, worked fairly well and across multiple introductory programming languages; however, the assessment had limits in its use, which lead to the SCS1. This assessment correlated well with FCS1, so it can standin; however, it was an hour long. Assessments should: cover the content, vary in difficulty, and have good discrimination (so individual scores are good predictors for the overall performance). In analysis, most of the SCS1 questions were hard, and few provided good discrimination. The assessment was then adapted to focus on the medium difficulty problems that discriminate (in test scores), and expanded to a 30 minute test.
With a measurement of whether students are succeeding in Computer Science, we can walk back to investigate what things influence students to succeed in Computer Science.
Among prior studying factors, we know that students do better in CS if they have more prior experience with Computer Science, and students do better in CS (as well as STEM and general education) with higher socioeconomic status (SES). There are also known prior links between SES and access to computing (whether it is formal courses, or informally), and SES to spatial reasoning. And both of these later components are linked to CS achievement.
In exploratory study (large, public university with mainly high SES students), showed statistical correlation from spatial reasoning to CS achievement. There was not correlation from having access to achievement. In the interest of time, this point was not presented further.
Barriers to computing
There are three main sources of access to Computer Science courses: state policies, geography (such as, circumstances, industry, or neighboring schools with CS), and resources (such as, time and money or rural versus urban).
In partnership with Georgia Department of Education, CS enrollment data from 2012-2016, plus other public data (such as, characteristics of the county and of the school), for each of the 181 school districts in Georgia, where each district has at least one high school. Using the definition of CS courses, being those that count toward the graduation requirement in Georgia as computer science, versus other computing courses, such as web design or proficiency with office. In Georgia, out of 500,000 students, about 6000 took a CS course in a given year, where about 50% of schools offered computer science during at least one year in that time frame. And the 6000 students are actually student course events, where a student taking two CS courses would count twice.
For those schools, CS enrollment, total high school enrollment, and median income contribute to whether CS will be offered in the next year.
This work is yet ongoing, where the next steps are to visit schools and collect further data on these factors, such as why a school discontinued a course offering, or now offers one. Or what do students these courses go on to do? An audience question wondered whether the CS courses offered relates to the courses offered of other parts of STEM.
Wednesday, October 17, 2018
Thesis Defense: Practical Concurrency Testing
Ben Blum defended his dissertation work today on Practical Concurrency Testing. What follows are the notes from that defense.
To prove that a program is correct across arbitrary concurrency. There are three testing approaches:
unit testing of the most likely, stress testing that is not systematic, and verification that requires separate tools and techniques to describe.
Landslide is a proposed technique that is based on Stateless Model Checking (Godefroid '97), which tests a different execution interleaving on every iteration. However, the naive interleaving provides O(2^n) states to test. [Flanagan '05] identified equivalent interleavings and [Musuvathi '08] proposed heuristic orderings to identify the possible bugs faster. This approach can often require annotations, so adoption requires automated instrumentation. This space is addressing further concurrency problems such as weak memory models, but hardware transactional memory is still open.
This instrumentation requires preemption points. Finer-grained finds more bugs, but increases the states to test. Bugs / failures follow certain cases, such as use-after-free, deadlocks, assertion failures, and invalid memory accesses. Dynamic data-race analysis can help inform the necessary preemption points.
As a reminder, a data race:
- one or more accesses is write
- threads are not holding the same mutex
- Nor is there other ordering requirements (condition variable, etc)
Quicksand applies this analysis to select different smaller problem spaces using subsets of possible preemption points. Each subset also represents smaller parts of the larger possible problem space. If these subsets are all satisfied, then represents a full verification of the program. Prior work explored using APIs such as mutex_lock/unlock, or using every shared variable access as preemption points.
This tester is deployed in OS courses at CMU, PSU, and U Chicago. Manual annotation is not viable for students, especially those struggling for whom the traces would be valuable. That said, students regularly deploy ad-hoc synchronization, such as while (!ready) yield();, requires heuristics as the naive model checking must test every possible count of yielding and its interleaving.
When used by students, about 75% of tested kernels / libraries have identifiable bugs from the testing framework. For the tested submissions (7 semesters) of students at CMU, there is an improvement in grades, but it is not statistically significant when correcting for the opt-in bias. Most students are then able to fix their bugs found by the tool.
Hardware transactional memory poses a separate challenge for model checking. Aborted transactions are observationally equivalent to an immediately failed transaction. Furthermore, all transactions must be assumed to abortable, as there are many possible causes of aborts. As prior posts covered, this fact requires that any transaction have a valid abort path. And this abort path requires most of the verification.
Testing Landslide using hand-written tests, transactional data structures, and a TSX-based spinlock. Each set of tests has a concurrency or performance bug in the implementations. What about demonstrating that there are no bugs in implementation? With 10 hours of CPU time, verification is only possible for small cases on complex code. That said, practical testing so far only requires <4 preemptions to create the buggy scenario. There can be other bugs requiring an increasingly complex ordering, but generally those are very rare.
Abstraction reduction [Simsa '13], works to reduce primitives within implementations to verified components, such as mutual exclusion, etc. Using this technique then allows Landslide to verify the complex HTM implementations at higher thread counts.
In attendance are the recent instructors of Operating Systems and the TAs.
To prove that a program is correct across arbitrary concurrency. There are three testing approaches:
unit testing of the most likely, stress testing that is not systematic, and verification that requires separate tools and techniques to describe.
Landslide is a proposed technique that is based on Stateless Model Checking (Godefroid '97), which tests a different execution interleaving on every iteration. However, the naive interleaving provides O(2^n) states to test. [Flanagan '05] identified equivalent interleavings and [Musuvathi '08] proposed heuristic orderings to identify the possible bugs faster. This approach can often require annotations, so adoption requires automated instrumentation. This space is addressing further concurrency problems such as weak memory models, but hardware transactional memory is still open.
This instrumentation requires preemption points. Finer-grained finds more bugs, but increases the states to test. Bugs / failures follow certain cases, such as use-after-free, deadlocks, assertion failures, and invalid memory accesses. Dynamic data-race analysis can help inform the necessary preemption points.
As a reminder, a data race:
- one or more accesses is write
- threads are not holding the same mutex
- Nor is there other ordering requirements (condition variable, etc)
Quicksand applies this analysis to select different smaller problem spaces using subsets of possible preemption points. Each subset also represents smaller parts of the larger possible problem space. If these subsets are all satisfied, then represents a full verification of the program. Prior work explored using APIs such as mutex_lock/unlock, or using every shared variable access as preemption points.
This tester is deployed in OS courses at CMU, PSU, and U Chicago. Manual annotation is not viable for students, especially those struggling for whom the traces would be valuable. That said, students regularly deploy ad-hoc synchronization, such as while (!ready) yield();, requires heuristics as the naive model checking must test every possible count of yielding and its interleaving.
When used by students, about 75% of tested kernels / libraries have identifiable bugs from the testing framework. For the tested submissions (7 semesters) of students at CMU, there is an improvement in grades, but it is not statistically significant when correcting for the opt-in bias. Most students are then able to fix their bugs found by the tool.
Hardware transactional memory poses a separate challenge for model checking. Aborted transactions are observationally equivalent to an immediately failed transaction. Furthermore, all transactions must be assumed to abortable, as there are many possible causes of aborts. As prior posts covered, this fact requires that any transaction have a valid abort path. And this abort path requires most of the verification.
Testing Landslide using hand-written tests, transactional data structures, and a TSX-based spinlock. Each set of tests has a concurrency or performance bug in the implementations. What about demonstrating that there are no bugs in implementation? With 10 hours of CPU time, verification is only possible for small cases on complex code. That said, practical testing so far only requires <4 preemptions to create the buggy scenario. There can be other bugs requiring an increasingly complex ordering, but generally those are very rare.
Abstraction reduction [Simsa '13], works to reduce primitives within implementations to verified components, such as mutual exclusion, etc. Using this technique then allows Landslide to verify the complex HTM implementations at higher thread counts.
In attendance are the recent instructors of Operating Systems and the TAs.
Wednesday, October 10, 2018
NASA Talk: Making Miracles Happen
Dr. Thomas H. Zurbuchen the Associate Administrator of NASA's Science Mission Directorate gave a talk today about some key lessons he has learned and observed from his years with NASA, as well as years before. The following is my quick notes from his talk.
Planning for the future, Voyager launched with the plan to visit Jupiter and Saturn. But the scientists still had plans for the possibility to visit Uranus and Neptune based on that launch window. And also, that in the lifetime of the probes, they may leave the Heliosphere. Imagine that over 40 years after launch, there are still papers to be written in Nature or Science from the mission. Voyager 2 is nearing this mark, which Voyager 1 already crossed.
Solar probe problem was to explore near to the Sun. The desire was there from 60 years ago. And eventually from decades of other work, the technology was there to support components such as solar panels that can operate close to Sun. Once the technology was available, the proposal was based on a $4 billion probe, which was outside the budget. But NASA offered to design / launch for $1 billion. This forced a complete redesign. The original mission used a single Jupiter flyby to bring the probe to 4 solar radii. For $1 billion, the flight path would instead use Venus to do repeated flybys and eventually lower the perihelion to 9 solar radii. While 9 > 4, the Venus flight path provides many flybys of the Sun, which provides a richer dataset from each flyby. This probe is the Parker Solar Probe, also exceptionally named for the still living scientist Eugene Parker.
Cassini reinforced the need for teams to have diverse backgrounds and training. That greater success is possible from having the great teams.
Hubble provided the research, just last year alone, for ~1000 publications. On the initial launch, there was the well known flaw in the mirror, when NASA had been predicting great images. After studying the results, a tech worked out that the mirror was slightly out of position, and by a small shift of the sensor, everything worked.
Shortly after finishing his PhD, Dr. Z came up with a new sensor in '98 to be possibly part of Messenger, at its launch in 2004, which was multiple times added and removed from the craft. And even after the launch, it took Messenger 7 years to complete the orbital path and remove sufficient energy so that the probe could enter orbit of Mercury. This requires patience.
When working in teams, he tells about being the Swiss army. Barbed wire had to be placed around the camp. This was the job given to those in trouble. But he talked with them on this duty and helped. So eventually, rather than just being the trouble job, the team was a good team, and some soldiers wanted to work on those teams. Better to be on a good team doing a bad task, than a bad team doing a good task.
The National Academy of Science sets the science priorities (this process from priority to mission I read significantly about in Chasing New Horizons), but ultimately the specific mission to meet the science priority is decided by Dr. Z. Then that mission moves through multiple steps and reviews. And one of the key steps is that while Dr. Z makes the decision, these decisions are based on the good advice from the experts.
For the missions flown, Dr. Z has about 5 failures for every success. These failures are things like being removed from the program or the mission being canceled. And sometimes it is for technical failures of the device or the probe. Things will fail. At every launch, he goes there to watch and has a large mission plan. Most of that mission plan covers what to do if things go wrong. Plan for the failure.
Planning for the future, Voyager launched with the plan to visit Jupiter and Saturn. But the scientists still had plans for the possibility to visit Uranus and Neptune based on that launch window. And also, that in the lifetime of the probes, they may leave the Heliosphere. Imagine that over 40 years after launch, there are still papers to be written in Nature or Science from the mission. Voyager 2 is nearing this mark, which Voyager 1 already crossed.
Solar probe problem was to explore near to the Sun. The desire was there from 60 years ago. And eventually from decades of other work, the technology was there to support components such as solar panels that can operate close to Sun. Once the technology was available, the proposal was based on a $4 billion probe, which was outside the budget. But NASA offered to design / launch for $1 billion. This forced a complete redesign. The original mission used a single Jupiter flyby to bring the probe to 4 solar radii. For $1 billion, the flight path would instead use Venus to do repeated flybys and eventually lower the perihelion to 9 solar radii. While 9 > 4, the Venus flight path provides many flybys of the Sun, which provides a richer dataset from each flyby. This probe is the Parker Solar Probe, also exceptionally named for the still living scientist Eugene Parker.
Cassini reinforced the need for teams to have diverse backgrounds and training. That greater success is possible from having the great teams.
Hubble provided the research, just last year alone, for ~1000 publications. On the initial launch, there was the well known flaw in the mirror, when NASA had been predicting great images. After studying the results, a tech worked out that the mirror was slightly out of position, and by a small shift of the sensor, everything worked.
Shortly after finishing his PhD, Dr. Z came up with a new sensor in '98 to be possibly part of Messenger, at its launch in 2004, which was multiple times added and removed from the craft. And even after the launch, it took Messenger 7 years to complete the orbital path and remove sufficient energy so that the probe could enter orbit of Mercury. This requires patience.
When working in teams, he tells about being the Swiss army. Barbed wire had to be placed around the camp. This was the job given to those in trouble. But he talked with them on this duty and helped. So eventually, rather than just being the trouble job, the team was a good team, and some soldiers wanted to work on those teams. Better to be on a good team doing a bad task, than a bad team doing a good task.
The National Academy of Science sets the science priorities (this process from priority to mission I read significantly about in Chasing New Horizons), but ultimately the specific mission to meet the science priority is decided by Dr. Z. Then that mission moves through multiple steps and reviews. And one of the key steps is that while Dr. Z makes the decision, these decisions are based on the good advice from the experts.
For the missions flown, Dr. Z has about 5 failures for every success. These failures are things like being removed from the program or the mission being canceled. And sometimes it is for technical failures of the device or the probe. Things will fail. At every launch, he goes there to watch and has a large mission plan. Most of that mission plan covers what to do if things go wrong. Plan for the failure.
Subscribe to:
Posts (Atom)