Saturday, October 21, 2023

 It has been far too long since I have posted anything here. I will attempt to do better, but we will see...

Monday, December 07, 2020

Traditional and Competency-Based Education


Competency-Based Education (CBE) is an emerging alternative to traditional educational approaches. To effectively engage in CBE, it is essential to understand how it differs from traditional educational approaches. To that end, the potential issues related to CBE will be explored, followed by the mitigation strategies. Next, the strengths of CBE will be discussed, followed by mechanisms to leverage those strengths. Lastly, the conclusion will be shared.

Potential Issues

To effectively discuss CBE’s potential issues, it is necessary first to evaluate the high-level differences between CBE and traditional educational approaches. The primary difference between traditional education and CBE is the focus on demonstrating skills or knowledge (Gervais, 2016). The CBE approach is based on the concept that once a student has demonstrated the skills associated with a given course, they receive credit. This approach contrasts with traditional approaches, which have a fixed timeline and require students to work at roughly the same pace.

Because CBE enables students to move at different speeds, it could be challenging to have a lecture that is beneficial to all members of the class.  For example, if one student enters the course with mastery of the course topics, the introductory discussions will be of little value to that student.  A more complex challenge is that students may have gaps in their knowledge.  They may have a great deal of depth in one area while missing fundamentals concepts. In this case, the students might be tempted to skip early work to complete the more advanced curriculum items.

 

 

Mitigation Strategies

As with many things, a single action cannot address the challenges previously discussed. Instead, a shift from traditional solutions to need-based instruction must occur. Additionally, CBE may require an instructor to teach in a different style than they have previously taught. The level of instructor engagement with an individual student must be much higher, given the customized and targeted educational experience associated with CBE.

For example, one approach would be to break instructional elements down to smaller segments. This point speaks to the challenges that the course designers must face when shifting to CBE (Cunningham, Key, & Capron, 2016). Rather than having a half-hour to an hour lecture, an instructor might employ small five to ten-minute miniature lectures targeted to a specific activity or unit of knowledge. Conducting these mini-discussions and then recording them so that a student can skip over the things they already know could be beneficial to the student.  Additionally, ensuring that the high-level concepts which the miniature lectures cover are documented might enable students with gaps in their knowledge to identify those elements. 

Strengths

From the student’s perspective, CBE’s primary strength is that it leverages their existing knowledge and background. Rather than assuming all students enter the course with the same level of knowledge, the assumption is that each student has potentially vast differences in their foundational knowledge. This shift in focus allows a student to complete work they know how to do quickly, enabling them to focus on improvement areas. While this could often be done in a flexible traditional course (working ahead), the student could not complete it early.

 

 

Leveraging Strengths

One way to leverage CBE’s strengths is to work closely with the student to ensure they have an accurate self-assessment of their knowledge. This leveraging of the strengths ties into CBE’s fundamental nature, where the instructor serves as a mentor and guide in the educational journey, not an oracle issuing lectures from on high.

Conclusion

A brief comparison of CBE to traditional educational approaches was presented. Understanding the differences between CBE and traditional educational approaches is essential to engaging in CBE as an instructor. An assessment of the potential issues and associated mitigation strategies were shared. The strengths and ways to maximize those strengths were explored. CBE is a powerful educational approach. The level of instructor engagement, targeted instruction, and student-driven timelines make CBE a compelling alternative to traditional education.

 


 

References

Cunningham, J., Key, E., & Capron, R. (2016). An evaluation of competency‐based education programs: A study of the development process of competency‐Based programs. The Journal of Competency‐Based Education, 1(3), 130-139.

Gervais, J. (2016). The operational definition of competency‐based education. The Journal of Competency‐Based Education, 1(2), 98-106. 

Monday, August 03, 2020

Discrete Event Simulation with SimPy using Databricks



Databricks is a notebook-based unified solution for performing various types of processing. It supports multiple programming languages, including Python. Databricks offers a free community version suitable for educational and training purposes (Databricks, n.d.). Discrete Event Simulation is a type of simulation focused on the occurrence of events. SimPy is a Python library that enables discrete event workloads (Team SimPy, 2020).  Using Databricks is a viable alternative to installing Python and Jupyter.

Getting Started

The first step is to go to community.cloud.databricks.com and create an account.

You will likely be asked if you want a free trial on AWS or Azure or if you want to use the community edition. For educational purposes, the community edition is sufficient (and free).


Once you’ve selected Getting Started under Community Edition you will receive notification that an email is being sent to you.  Opening the link lands you on a page where you are asked to reset (you are setting) your password.

After you’ve assigned your password, you land in the Databricks environment.

The landing page contains links to common tasks, along with a left navigation bar. If you are using a library like SimPy, it is a good idea to import it and set it to always be installed when a cluster is created.  The community edition seems to delete clusters after periods of inactivity.  Importing the SImPy library and selecting that should always be installed on clusters means you do not have to reimport it each time.  Selecting Import Library brings up a screen named “Create Library.” Don’t be confused. You are actually importing it into the environment. 
To import SimPy select PyPi for the Library Source and enter SimPy in the package name. Then hit Create.

You will likely see a screen saying that there are no clusters available.  Click the option which states “Install automatically on all clusters”

You will be prompted to ensure you really want to enable this feature.  As long as you are using versions less than 7, you do.
At this point, you have told Databricks that when you create a cluster, you want SimPy to always be installed and available.  The next step is to use it. To do so, you need to the landing page.
You might think you do this by clicking the Home link in the Left Nav, instead, click the databricks icon above it.  The home icon is used to navigate your notebooks and libraries. It is also where you can import and export notebooks, create Notebooks – libraries – folders – and ML Experiments.

Creating and Running a Notebook

Databricks uses the notebook paradigm made popular by Jupyter. From the landing page, click New Notebook. Alternatively, notebooks can be created using the Home link mention above.  Clicking New Notebook brings up a dialog where you supply the name of the notebook and select the language and cluster to use.  In this case, we have not created any clusters, so you will leave that blank. Since we are exploring the use of SimPy, ensure that Python is selected.

After clicking Create, you will land in a notebook with one cell and one line in that cell.

To add more cells, hover in the middle of the box on the lines above or below the cell.

Alternatively, click the chevron (Edit Menu) and select the desired location for the new cell.

Most of the time, the first thing you’ll want to do is import libraries so they are available for use within your code.

While the program is not very interesting, you can run it by doing a Shift-Enter while in the cell, or selecting the play button from the menu at the top.  Since we have no clusters, you will see a prompt asking if you would like to Launch a new cluster and run your notebook.  You most likely want to check the box that launches and attaches without prompting. Select Launch and Run.

At this point Databricks is creating a cluster with no worker nodes and single driver node. Since we are using the Community edition, there are no worker nodes.  Since we are writing Python that is not using Spark, that does not matter.  If we were addressing Big Data problems, then we would want to use a version of Databricks hosted in AWS or Azure.
After the cluster is created, the command is executed.  You can tell the results of the execution by looking below the cell.  You should see something like the following:

Now that we have a cluster, we need to write the rest of our simplistic simulation.  Since SimPy uses the concept of a generator to produce events, we need to write one. Below the first cell, add another cell and write code similar to the following:

The key instruction in this statement is the yield statement.  Next, we need to use this generator within SimPy. To do that, add a cell below the one you just created and put the following in it.

The final step is to run all of the cells.  You can do that by hitting Shift-Enter in each cell or select the run all (play button) at the top of the screen.

Generally, we would want to add documentation to our notebook, so that others can understand it better. To do this, add a cell above your first cell, and start it with %md.  This is a magic string that turns the cell into a markdown cell. Enter a description using markdown syntax and then run the cell.

After execution, the cell converts to the output associated with the markdown.

Publishing the Notebook

Often you need to share your finished.  To do this, you publish the notebook. This action results in a shareable link.  Note that anyone who has the link can view it.  The AWS or Azure hosted version of Databricks has a richer sharing model where users can collaborate on a notebook in real-time.

When you click the publish button you will be prompted to ensure you really want to publish the notebook.  Also, note that the share links are active for six months.

Once published, you will be given the link which you can share.

The link for the notebook used in this example is:

Additional Resources

Databricks has a Get Started page, which quickly walks a new user through the environment.
On that page, the quick start is very useful.

Conclusion

I walked through the process of signing up for Databricks Community Edition. I then shared the process of importing a library (SimPy), and then using that library on a cluster.  We created a die-rolling example and talked about how to publish that example. While this is not an exhaustive coverage of the topic, hopefully, this information will help you get started with SimPy in Dataricks.
References
Databricks. (n.d.). Databricks Community Edition. https://community.cloud.databricks.com/

Team SimPy. (2020). SimPy: Discrete event simulation for Python. https://simpy.readthedocs.io/en/latest/



Tuesday, July 02, 2019

Learner-Centered Teaching 

Learner-centered teaching is a form of instruction which focuses on the needs and interests of the learner (KeenGwe, OnChwari, & OnChwari, 2009).  The idea is to engage the learner in the learning process, help them take responsibility for their learning, and help them learn how to learn. In this form of instruction, engagement is critical.

The role of an educator in a learner-centered environment is that of guide and facilitator (Weimer, 2002).  That guidance should be customized and based on the unique identity of the student.  Rather than lecturing to a class, our role should be to answer questions, point out potential pitfalls, and ensure the students are engaged.

The way this can be applied in a computer science course is by assessing everyone’s strengths and weaknesses and providing specific guidance to each.  While this will be challenging, the benefits to the student make such effort worthwhile. As with other disciplines, establishing a trusting relationship built on mutual respect will provide a clear channel of communication.  The students must be comfortable to say “I don’t get it” without fear of embarrassment or loss of stature.

References
KeenGwe, J., OnChwari, G., & OnChwari, J. (2009). Technology and student learning: Towards a learner-centered teaching model. AACE Journal, 17(1), 11-22.
Weimer, M. (2002). Learner-centered teaching: Five key changes to practice: John Wiley & Sons.


Wednesday, April 03, 2019

The NoSQL Aggregate Data Model



The aggregate data model is based on the idea that elements of a complex objects are often manipulated in a related fashion (Sadalage & Fowler, 2012). These aggregates are in part a solution to the object-relational impedance mismatch problem. By saving the object that exists within an application in a similar fashion within the database, it greatly simplifies saving and loading of that information. Relationships between aggregates is maintained by links. This allows the manipulation of one aggregate (a customer for example) be independent from a related aggregate (like an order). This linkage is somewhat similar to the relationships in the relational model, but differs in that the things being related are potentially of much higher complexity.

Within a document database, such as MongoDB, Binary JavaScript Object Notation (BSON) is used to store aggregates (Kaur & Rani, 2013). MongoDB supports the creation of an index to increase the speed of execution of a query. Documents within MongoDB are essentially serialized versions of classes, and in turn aggregates. MongoDB supports composition and associations. Composition is when one aggregate is embedded within another. An association is a link, as mentioned earlier. It is possible to query MongoDB to retrieve a particular field, or element of an aggregate (MongoDB Inc, n.d.). For example, consider an aggregate that represents a customer. The customer has a name, age, and address. It is possible to query all customers and project only the name and age fields.

The benefits of an aggregate data model is that allows for easy mapping to the object model within an application. If the object model is well constructed, the data model will be also. It also provides a reasonable partitioning mechanism, as the elements within an aggregate are closely related and should be stored physically close to each other. Another advantage of the aggregate data model is that retrieval of a given aggregate is simplified compared to that of the relational model. In the relational model, a transformation is often required to construct the object the calling application requires. Within the aggregate model, that work is not required.

A negative of the aggregate data model is that there are not abstraction layers, similar to views in the relational model. The consumer of an aggregate data model typically interacts directly with the data store. If the aggregate changes it is the responsibility of the consumer of the data to adjust to those changes. Additionally, I have firsthand experience attempting to retrieve information from an aggregate data model in a way that was not intended by the designers of the data model. In some systems, it is necessary to retrieve every entire document to perform analytics.

I have worked with NoSQL databases in the past. The term aggregate data model was not used, but the concept is valid. Typically, individuals refer to the database’s JSON, rather than an abstract concept. MongoDB refers to the concept as a “denormalized” model (Anonymous, n.d.). When the term aggregate is used, it typically relates to the analytical operation. This is yet another example of the lack of standardization within the NoSQL database space.

References
Anonymous. (n.d.). Data Model Design. Retrieved from https://docs.mongodb.com/manual/core/data-model-design/
Kaur, K., & Rani, R. (2013, 6-9 Oct. 2013). Modeling and querying data in NoSQL databases. Paper presented at the Big Data, 2013 IEEE International Conference on.
MongoDB Inc. (n.d.). Project Fields to Return from Query. Retrieved from https://docs.mongodb.com/manual/tutorial/project-fields-from-query-results/
Sadalage, P. J., & Fowler, M. (2012). NoSQL distilled: a brief guide to the emerging world of polyglot persistence: Pearson Education.

Thursday, June 01, 2017

Big Data and Privacy

In January of 2014, President Obama commissioned a 90-day study on the effects Big Data on government, individuals, businesses, and consumers (White House, 2014).  The report evaluated the state of Big Data and its sociotechnical implications.  It included several policy recommendations. 
The policy recommendations included:
·         Advance the Consumer Privacy Bill of Rights
·         Pass national data breach legislation
·         Extend privacy protections to non-U.S. Persons
·         Ensure data collected on students in school is used for educational purposes
·         Expand technical expertise to stop discrimination
·         Amend the Electronic Communications Privacy Act
While these recommendations are favorable to the protecting the rights of individuals in with regards to Big Data, they do not go far enough.  As is apparent in recent days, Presidential orders and agency policies are a temporary measure.  To ensure long-term protection legislation is required, or perhaps a constitutional amendment.  While the Fourth Amendment is currently being interpreted as a right to privacy, that may also change.  The United States needs a constitutional amendment stating the rights of the population with regards to privacy.
It is reasonable for an organization, government or company, to be required to disclose data collected on individuals.  For example, if a college chooses to track information on its students the students should be aware of the information being retained, who is viewing that information, and for what purpose.  The balance between advancing knowledge and the right to privacy should be addressed through a variation of informed consent.
The report does accurately recognize the opportunities that Big Data enables. There are many opportunities where analyzing medical information can lead to health-related improvements. However, people are typically very concerned about privacy and access to health information.  There are many instances where an individual keeps a health condition private, and it only becomes public knowledge after the individual’s death.
Until legislation, it is the burden of each to protect their privacy.  There are many ways to protect privacy online (Consumer Reports, 2017).  Some steps include avoiding free Wi-Fi, locking devices using longer PINs, enabling automatic updates of devices, using a password manager (such as LastPass), and monitoring social media standings (such as group membership and privacy settings).  Many recommendations (such as shredding documents with sensitive data) are not new.  More advanced approaches to ensuring privacy include the use of anonymizing browsers, such as the Tor Browser (Griffith, 2017).
            Privacy is viewed by many as an inalienable right.  If an individual is willing to forfeit that right in exchange for some good or service (such as better movie recommendations) that should be a conscience decision.  As Big Data enables greater value to marketers (and other organizations), there is greater likelihood that the consumer's rights may be compromised.  While executive orders may be an effective short-term solution, legislation should be passed and kept current to protect the rights of the populous.



References
Consumer Reports. (2017). 66 Ways to Protect Your Privacy Right Now.   Retrieved from http://www.consumerreports.org/privacy/66-ways-to-protect-your-privacy-right-now/

Griffith, E. (2017). How to Stay Anonymous Online.   Retrieved from http://www.pcmag.com/article2/0,2817,2363302,00.asp

White House. (2014). Big Data: Seizing opportunities, preserving values (report for the President). Washington DC, USA: Executive Office of the President.[WWW document] http://www. whitehouse. gov/sites/default/files/docs/big_data_privacy_report_may_1_2014. pdf.


SleepTrackCam

A video created for an assignment in CS875


SleepTrackCam


Utilizing the Animoto web site a simple video was created (Animoto, 2017).   The default music utilized was royalty free. Clipart used in the video was retrieved from a royalty free clipart collection website (Openclipart, n.d.).  The approach utilized was to tell the story of a fictions Internet of Things (IoT) device named SleepTrackCam.  The idea is that a device with a camera, microphone, and various sensors would monitor sleep.  To avoid privacy and security concerns processing would occur locally (edge computing).  The video has been published to my blog  http://alandennis.blogspot.com/2017/06/sleeptrackcam.html for those who are interested.
Having used Animoto, it raises questions regarding how presentations should be done.  Typically, a PowerPoint presentation has a great deal more text on each slide than Animoto allows.  Perhaps that is beneficial.  The use of images and simple text slides may transfer knowledge in a more succinct way.  The process requires considerable thought, comparable to expressing a complex idea in a tweet.



References
Animoto. (2017). Animoto.   Retrieved from https://animoto.com/dashboard

Openclipart. (n.d.). Clipart - High Quality, Easy to Use, Free Support.   Retrieved from https://openclipart.org/




Friday, May 19, 2017

Unlimited Time and Money Wish-List

What would you do with unlimited time and money? This post answers that question classifying the items into five categories: education, job/research, philosophical/religion, travel, and home.

Education

·         Complete the Doctorate in Computer Science
·         Learn to play the piano
·         Learn to compose music
·         Have the time to read all assigned readings in my coursework
·         Teach
·         Make an impact on the young, so they can see the world is full of choices and diverse destinations
·         Take more math classes
·         Take more statistics classes
·         Take history classes, and pay attention this time
·         Learn Spanish

Job/Research

·         Research a life changing technology, such as a cure for a terminal illness.
·         Leave a mark on the world; be it an interesting paper, idea, or book.
·         Write another non-fiction book
·         Write a fiction book
·         Master a topic
·         Work where research is the most important element
·         Publish articles
·         Go to conference, present, and be included in the proceedings
·         Share my thoughts
·         Make the future happen, rather than just think about what might be

Philosophical/Religion

·         Become the sort of person who wakes early, drinks coffee on the porch, and thinks a lot
·         Visit old churches, to take in the atmosphere
·         Visit a cathedral, and contemplate the lives spent building it.
·         Learn to paint, and express faith in art
·         Re-read the Bible
·         Read the major religions works
·         Take another philosophy class, and pay attention this time
·         Learn more about Hinduism
·         Learn more about Buddhism
·         Take time to pause, enjoy the moments, and reflect on the past

Travel

·         Run a half-marathon in all fifty states.
·         Spend a long vacation in Ireland.
·         Explorer Alaska, slowly, so that the true measure of the place can be felt.
·         Go to Maine
·         Climb Machu Picchu
·         Go to Yellowstone National Park
·         Go to Iceland
·         Spend time in Australia
·         London
·         Paris

Home

·         Build a log cabin (already a work in progress)
·         Have a study with bookshelves, leather chairs, and a good reading light.
·         Build an outdoor kitchen
·         Grow grapes and make wine
·         Grow berries, such as blueberries.
·         Have a pond/lake with fish and ducks
·         Have a dock on a pond
·         Build a treehouse, for young and old alike.
·         Have a deck with lots of comfortable chairs
·         Have a garden, and actually eat the stuff I grow

Conclusion


Most of the items in these lists do not require unlimited money or time.  As with many things, the issue is about focus and priority.