Platforms for Learning in Computer Science July 28, 2005
Dec 30, 2015
Platforms for Learningin Computer ScienceJuly 28,
2005
In an Ideal Computer Science Program: Students would:
Be able to easily relate topics from different courses and areas of computer science
Feel programming assignments are meaningful
Feel inspired and able to explore further into topics than required
Gain experience with larger programs and maintaining and integrating code more like they will find in the workforce
The Visualization of Such a Program:
We feel that we could create a program to meet these needs through a Platform for Learning
What is a Platform for Learning?
Students begin with a simple version of the platform project when they start the program.
As the student progresses, they continue adding the new things they learn to the platform, allowing them to relate many topics back to one place.
“A platform for learning is a set of common, unifying objects or experiences that weave together the various classes in a curriculum.”
Key Principles in Platforms for Learning Context for Learning
Students can apply topics they learn in lecture to actual implementation in the platform, reinforcing lecture topics
Integration between CoursesThe same platform is used throughout several
different classes, so students can see how different topics connect together more easily
Personal OwnershipStudents are more motivated to do well in
their work with their platform, because it is something that belong to them and they will keep.
More Key Principles
Learning CommunityStudents, even at different stages in
their studies, share a common point of interest, building a community of learners who share a common focus
FlexibilityThe platform supports additions and
changes as the students come up with ideas they would like to try, encouraging innovation and further learning.
How Might a Computer Science Platform Look?
A computer science platform would most likely be a program that students create and add functionality to
There are numerous types of programs that it could beA game, personal organizer, web browser,
operating system and many others are all possible
Each type of program has its pros and cons (Some students would find many games very inspiring, but others would be put off by them.)
An Example Progression of a CS Platform for the First Two Years A platform would complement and support the line of topics already included in the current curriculum
Students would begin with a program using a text-based interface in the imperative programming paradigm
They would then add a simple graphical interface and use the object-oriented paradigm
They would learn to utilize algorithms and consider their complexity
More Advanced Possibilities
The platform should support connection to the web and online interactivity and security
It should be able to be networked between other local computers
It should be able to utilize artificial intelligence
Students should be able to add a more advanced graphical user interface and other graphics
Platform Style More important at these beginning
stages than the actual type of program implemented would be how the platform is provided to students
We have identified 3 key forms a CS platform program could take:Entirely Student ImplementedStudent Implemented with a Library of
Helper Functions/ObjectsModifications to an Already Working
Program
Entirely Student Implemented In this style, students start out with nothing
but an objective and guidelines on how it could be implemented using concepts learned in lecture
The idea is that students will be able to completely understand and be able to implement everything that is needed in the program
One drawback would be that the program would be limited to what the students completely understand and it could be more difficult to create something inspiring.
Example: An Organizer’s To Do List
This example is a program in C that CS151 (Beginning C Programming) students might be expected to write completely on their own.
Students start by writing a program that can print a simple to do list
By the end of the term, the list is user input, can be saved to and loaded from disk, and can be sorted using different methods
To Do List Example ContinuedAdded Functionality Structural Changes Topics Learned
1 Write welcome message
Printf, defined constants
2 Prints list Arrays, for loops
3 Prompts user for input, repeats
Hard coded list to user input
User input, while loops
4 Gives choice on actions
Move code to functions
Select, user-defined functions
5 Sort tasks by date Sorting algorithm
6 Checks current date, sort tasks by priority
Parallel arrays to structures
Structures, algorithm design
7 Save/Load list, creative functions
Change sorts to use pointers
File I/O, pointers
Student Implemented with a Helper Library
In this style, students would start with a library that helps students achieve tasks they don’t yet know enough to complete on their own
They would each write their own program and would have access to this library just like they would use a standard library, in order to make it easier to add more advanced functionality.
A drawback would be that students are working with ideas they don’t yet understand, and the current curriculum may need to be rearranged to accommodate it.
Example: An Organizer’s Calendar This example is a program in Java that
students might be expected to write in CS161 (Beginning Java Programming) that students would write with the help of Helper Methods to make the graphical interface.
It starts with a simple program to display a welcome screen and calendar.
A final version would use a graphical interface to input tasks and events onto a calendar, remind the user of events, and save the calendar to and load it from a file.
Calendar Example ContinuedAdded Functionality Structural Changes Topics Learned
1 Show welcome message, calendar object
Object creation, methods, variables
2 Color, animation, text screen, input line
Move objects to show in a single screen
Arrays, static methods, variables
3 Change animation, print text from input to text screen
For loops, user input, output
4 Listens for clicking on dates, add/view notes, color dates
Change object from static to an instance, create methods
User methods, constructors, switch, interfaces
5 Buttons to change months
ActionListeners
6 Load/Save calendar Change days from strings to objects
User defined Objects, File I/O
7 Add and view events Polymorphism, threads
Modifications to an Already Working Program
In this style, students are given a working program with much of the code provided. Some sections would be incomplete and need filling in and some sections would need to be reworked. Students could also add additional functionality.
One thing this allows is for students to create more meaningful programs and practice working with existing code.
A drawback is that students may not understand much of the code in their program and feel less personal ownership of it.
Example: An Organizer’s Address Book
This example is a program in Java that students might be expected to work with and further develop in CS161 (Beginning Java Programming).
They could start with an address book program that runs, but only displays a single, hard-coded contact and non-functioning GUI interface
The final version would be a multi-page address book that can be loaded and saved and organized.
Address Book Example Continued
Added Functionality Structural Changes
Topics Learned
1 Change author name, screen size
Constants, variables
2 Phone numbers added, more contacts, display all contacts and show more info when clicked
Arrays, for-loops, simple graphical output
3 Turn pages Event-driven programming
4 Sort contacts alphabetically, accept contacts through text fields
Sorting algorithm, String functions, graphical input
5 Add different kinds of contacts for business associates and friends
Move arrays to objects
Object Oriented Programming, Polymorphism
6 Load/Save address books File I/O
Pros & Cons: A SummaryStyle Pros Cons
Student Implemented
Personal Ownership, More Complete Understanding, Matches Current Curriculum Well
Limited Possibilities in Early Courses, Could Be Less Interesting
Student Implemented with Helper Library
More Complex Things Possible, Possibly More Interesting, Lots of Practice Using Libraries
Less Understanding, May Require Topics Covered in a Different Order, Increased Development Time
Modifications to Working Program
Very Complex Things Possible, Progressive Versions May Be Available, Practice Interfacing with Existing Code
Less Understanding, Little Personal Ownership, Difficult for Beginners to Make Meaningful Additions, Increased Development Time
What Next? The next step will be to decide which of
these styles of platform or what combination of them to use.
After that, we will need to decide on the type of program to use.The Organizer shown in the examples today is
only one possible solution and may not be the best one.
Once these decisions are made, work can begin designing and implementing the platform that complements the current course curriculum for the first few courses students take.
How Can Microsoft Help?
Continued Advice on Style of Platform Choice
Suggestions on Type of Platform Help Arrange Face to Face Meeting at
Microsoft to Discuss Platforms for Learning with Microsoft Employees
???