tag:blogger.com,1999:blog-203555812024-03-19T02:20:46.929-05:00Questio VerumThe adventures of academia, or how I learned to stop worrying and love teacher evaluations.<a href="/2008/03/what-does-questio-verum-mean.html" >*</a>Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.comBlogger563125tag:blogger.com,1999:blog-20355581.post-82933339089392196732023-08-02T13:19:00.007-05:002023-08-04T15:00:09.759-05:00HUG summer 2023<p>My family had the honor of accompanying 16 college students to Greece this summer for <a href="https://www.harding.edu/academics/study-abroad/programs/hug">HUG</a>, Harding's travel abroad program. This was the <a href="http://frankmccown.blogspot.com/2011/05/off-to-greece.html">second time</a> we've had this opportunity; twelve years ago we took our boys, ages 2 and 4, to HUG. It was a whole lot easier this time with 14 and 16 year olds!</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio3KI8YfZM5l77pTwa-2qCqflXrU8Ok4nDMEGLQHfAPTcHAjSosTvJQQ1DhOuR26hAmnI68Kx3ivvDtxomu8SQzN4Wdp8sghtagT1JXwYWhv1ppzcJUjQQqX8ICVaH6WTtz1qZdjbxVQ6hYwHVoTByGObn_-DoA11BrZeyy-oxdPicH-ANE4s/s1236/airport.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="828" data-original-width="1236" height="268" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio3KI8YfZM5l77pTwa-2qCqflXrU8Ok4nDMEGLQHfAPTcHAjSosTvJQQ1DhOuR26hAmnI68Kx3ivvDtxomu8SQzN4Wdp8sghtagT1JXwYWhv1ppzcJUjQQqX8ICVaH6WTtz1qZdjbxVQ6hYwHVoTByGObn_-DoA11BrZeyy-oxdPicH-ANE4s/w400-h268/airport.jpg" width="400" /></a></div><br /><p></p><p></p><p>We absolutely loved living in the Artemis, Harding's hotel in Porto Rafti, along with the college students, directors Daniel and Meagan Adams, assistant Lacey Bortell, and the wonderful Artemis staff. The students acted as 16 big brothers and sisters to our boys and genuinely reflected God's love to our family. </p><p></p><p>My wife Becky thoroughly documented our trip on Instagram, but I'll include a few photos below. Our HUG experience can roughly be broken up into these parts:</p><ol style="text-align: left;"><li>Athens (including church in Elliniko)<br /></li><li>Life in the Artemis (including teaching and classes)<br /></li><li>Egyptian trip (Aswan, Nile cruise, Nubian village, Aswan, Cairo)<br /></li><li>Northern Greece trip (Mount Olympus, Meteora, ThessalonĂki)<br /></li><li>Peloponnese trip (Corinth canal, Acrocorinth, Ancient Corinth, Olympia<br /></li><li>Free travel on island of Aegina <br /></li><li>Island of Crete <br /></li><li>Israel trip (Tiberias, Sea of Galilee, Jordan river, Dead Sea, Bethlehem, Jericho, Jerusalem)</li></ol><p>The trips were amazing. We enjoyed so many beautiful and historic locations and ate some wonderful food. I especially enjoyed being in Israel and seeing the places mentioned in the Bible and where Jesus actually walked. Our time in Israel coincided with the passing of a new law that <a href="https://www.cnn.com/2023/07/24/middleeast/israel-supreme-court-power-stripped-intl/index.html">curtailed the Supreme Court's power</a>. We saw lots of protestors out demonstrating and even had to alter our trip to see the Dead Sea Scrolls because protests had shut down the museum. <br /></p><p>Besides the travel, there were a few sports-related things I got to do. I played <a href="https://en.wikipedia.org/wiki/Padel">Padel</a> for the first time. It's a mixture between tennis and racquetball, and it's the number one growing sport in Europe. I enjoyed playing it even more than pickleball! I also played pickleball on the oldest pickleball court in Greece, which is just 10 minutes from the Artemis. And finally I played tennis twice on clay courts.<br /></p><p> </p><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS8yL-WUMPxUGZTBL64lZ5I1Jrk_h8UAhNFCNEGR4mDNvYNw3AtY4ROAbguECWCPHJI5rtdI8GfXqKS58gy-mcWjT3x3MynMWu0enG40KnRevsEePnvcq10QYUGwjr74hfQJKMffYk7MGOITw52X_UHeOrE-yVdxmkhxgaTOYuXnBUuWy3MXc/s897/frank_becky_sphynx.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="535" data-original-width="897" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS8yL-WUMPxUGZTBL64lZ5I1Jrk_h8UAhNFCNEGR4mDNvYNw3AtY4ROAbguECWCPHJI5rtdI8GfXqKS58gy-mcWjT3x3MynMWu0enG40KnRevsEePnvcq10QYUGwjr74hfQJKMffYk7MGOITw52X_UHeOrE-yVdxmkhxgaTOYuXnBUuWy3MXc/w400-h239/frank_becky_sphynx.jpg" width="400" /></a></div><p></p><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqjGuaFW04Tb8ZtaAXAXMQC9Fx_0UXCr4bWqYbebNOzIpmY9KEZ1JqAVtsEFezLCZxtMIUlTiiqOcOEiJO4kWXYilBCEBjN5yfOb73y-EQGuJbHveN3MX_hVIZsO-e7C1K8rhOEqIvEK7epvAM_AaCuZCNCLRXXrNKi6f2iymPJAkm0dpwk1g/s4032/20230528_180539.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqjGuaFW04Tb8ZtaAXAXMQC9Fx_0UXCr4bWqYbebNOzIpmY9KEZ1JqAVtsEFezLCZxtMIUlTiiqOcOEiJO4kWXYilBCEBjN5yfOb73y-EQGuJbHveN3MX_hVIZsO-e7C1K8rhOEqIvEK7epvAM_AaCuZCNCLRXXrNKi6f2iymPJAkm0dpwk1g/w400-h300/20230528_180539.jpg" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2wglBtJWx5O9FZeW3k5SACMw10vDtbK5HACPrJ-IepcBwBYUf5cdY89ShVCfNcWwqRqRUT2OLF2IbdCOEMBu0gKK7PfbkS41l2sOKaiZu1JMYoWxfeYtshxVGVk3NK2Oo1nFQgqt5gQX9FJ1HxeRLFakkF0uG5vU0B0sUlssUHhMGZxyqbhQ/s4032/20230610_161942.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2wglBtJWx5O9FZeW3k5SACMw10vDtbK5HACPrJ-IepcBwBYUf5cdY89ShVCfNcWwqRqRUT2OLF2IbdCOEMBu0gKK7PfbkS41l2sOKaiZu1JMYoWxfeYtshxVGVk3NK2Oo1nFQgqt5gQX9FJ1HxeRLFakkF0uG5vU0B0sUlssUHhMGZxyqbhQ/w400-h300/20230610_161942.jpg" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5gzsPLjtEVbIQ5IurDJE76O9MD4JJHzXzeY2r0WHNRxYj2m7Eek-zYzSf09nQXlK1kV9IMyW5kiWSh_Ijf4Fty8SOCH4A42SICzaESvACtBcBu2Js22GWbFvFAP3QNmdYAOf49_6fSRhlbXb-NRY7exz6URy9etYCV_0GcGj3oSl5AKfafmU/s3264/20230707_121756.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2448" data-original-width="3264" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5gzsPLjtEVbIQ5IurDJE76O9MD4JJHzXzeY2r0WHNRxYj2m7Eek-zYzSf09nQXlK1kV9IMyW5kiWSh_Ijf4Fty8SOCH4A42SICzaESvACtBcBu2Js22GWbFvFAP3QNmdYAOf49_6fSRhlbXb-NRY7exz6URy9etYCV_0GcGj3oSl5AKfafmU/w400-h300/20230707_121756.jpg" width="400" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisG41YJXX30BvQxRT8jxLIaPi5MdTUFp6PVOZqXThwWJ5AVYr9Oc8Dz2WskxbkTOCrq_i5T4DTeLpLPmrOpoLRln0Ajj7KqFs0mfmoI_MDoReShVnH6UedheQGRrNFFP-19KNUWOKzKNbMSLDik4ROkUr5AFIQx_FzsyABnB01I2UN1K6VVeM/s4032/IMG_9550.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisG41YJXX30BvQxRT8jxLIaPi5MdTUFp6PVOZqXThwWJ5AVYr9Oc8Dz2WskxbkTOCrq_i5T4DTeLpLPmrOpoLRln0Ajj7KqFs0mfmoI_MDoReShVnH6UedheQGRrNFFP-19KNUWOKzKNbMSLDik4ROkUr5AFIQx_FzsyABnB01I2UN1K6VVeM/w400-h300/IMG_9550.JPG" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQE53gjQYJIlXwtuD0354NiLkOkvf-pj6d7YVp-ywpiNP-YsuVpG_DBLxdkXUMx2B1S8fL4KiR836BUDCzgBXFyusd2QASzFt6eF79YiPWwUwIqSnDxSvyNB17V4N76G2nP4zBmsL2zzZniRQxd0Ea-Zdo0WTTL_c3zJiAP1ywkSXfbPkO6YM/s4032/20230727_180126.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4032" data-original-width="3024" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQE53gjQYJIlXwtuD0354NiLkOkvf-pj6d7YVp-ywpiNP-YsuVpG_DBLxdkXUMx2B1S8fL4KiR836BUDCzgBXFyusd2QASzFt6eF79YiPWwUwIqSnDxSvyNB17V4N76G2nP4zBmsL2zzZniRQxd0Ea-Zdo0WTTL_c3zJiAP1ywkSXfbPkO6YM/w300-h400/20230727_180126.jpg" width="300" /></a></div><br />Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com1tag:blogger.com,1999:blog-20355581.post-47767219552172906442023-01-24T09:05:00.004-06:002023-08-02T11:13:50.021-05:00What College Professors Should Know About ChatGPT<p> Or... <cite>How Educators Lost to the Robots</cite></p><p>The following is adapted from a talk I gave to the Harding faculty yesterday.</p><p>Good afternoon! I've been given a few minutes to share with you what I know about ChatGPT. I was wondering why Associate Provost Dana Steil asked me to give this talk. Then I remembered this email I sent him and my Comp Sci colleagues on Dec 2, just two days after ChatGPT was released by OpenAI. The subject line read: <b>We're in trouble...</b><br /><br /></p><p></p><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi58FVkNY7OHAk6dLDE3zRsDMRPqulVaqpURvSqP95RnQNqCk41qqzF1BbBpUVLBEJo-XSdoTe3-KyPGQRarRXp46b4mvxq7kY6v0qNOtrA4uU92KTK_2s_BDRHsQydPwTf5_bvE5OuLtn5b8EhVA_Qpg3mNgDD3GFROMVoI5NDvSFNeLaM/s920/chatgpt_email.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="678" data-original-width="920" height="295" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi58FVkNY7OHAk6dLDE3zRsDMRPqulVaqpURvSqP95RnQNqCk41qqzF1BbBpUVLBEJo-XSdoTe3-KyPGQRarRXp46b4mvxq7kY6v0qNOtrA4uU92KTK_2s_BDRHsQydPwTf5_bvE5OuLtn5b8EhVA_Qpg3mNgDD3GFROMVoI5NDvSFNeLaM/w400-h295/chatgpt_email.png" width="400" /></a></div>
<p>I had fed my programming class assignments to ChatGPT, and it had produced perfect or near perfect solutions in seconds. Of course I was quite alarmed and wanted to get my colleagues' attention.</p><p>(Side note: I sent a similar email to my colleagues at zyBooks, and it sparked a lot of great discussion.)<br /></p>
<p>Let me backup just a little for those of you who may not be familiar with ChatGPT. ChatGPT is a chatbot created by OpenAI, an AI research laboratory in San Francisco. A chatbot is an application that can chat with you in a human-like manner. GPT stands for <b>Generative Pre-trained Transformer</b>, which is a technical explanation as to how it was created. Basically researchers created a neural network, which is loosely modeled after the human brain. They fed the neural network billions of words from books, conversations, and articles from the web and trained it to make connections between words and even ideas.
</p>
<p>You can use ChatGPT by going to <a href="https://chat.openai.com/">chat.openai.com</a>. Here's a screenshot of me asking ChatGPT to summarize in three sentences what ChatGPT is.</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-pPa7cBWEkC2e6fIB94McsjFq0Mr1qes1E4_-TFye0hL9UzLVih7qBeQDo0AbHmzUVTKVbAfkiSmKMNfZ45P5sbvqbux_7E-B4X27N9ztdKEvMZKIysgq0jogAgPS8Em1bZS6L2ptrsO-bvOUETs6Yqn2UK4i9cBhtfFPYvpXVSrEoSvm/s1040/what_is_chatgpt.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="660" data-original-width="1040" height="254" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-pPa7cBWEkC2e6fIB94McsjFq0Mr1qes1E4_-TFye0hL9UzLVih7qBeQDo0AbHmzUVTKVbAfkiSmKMNfZ45P5sbvqbux_7E-B4X27N9ztdKEvMZKIysgq0jogAgPS8Em1bZS6L2ptrsO-bvOUETs6Yqn2UK4i9cBhtfFPYvpXVSrEoSvm/w400-h254/what_is_chatgpt.png" width="400" /></a></div><br /><p></p>
<p>ChatGPT is capable of more than just chatting with a human. It can:
</p><ul>
<li>write poems, entire essay, or research paper on any number of topics.</li>
<li>solve difficult math problems</li>
<li>write programs in a number of programming languages</li></ul><p>The ChatGPT responses are so good that most of us are unable to tell they are AI-generated.</p><p>I asked ChatGPT about it's significance: <i>How significant is the invention of ChatGPT? </i>It responded: "ChatGPT represents a major advancement in the field of natural language processing." That is an understatement. <b>ChatGPT is the best AI chatbot ever released to the general public</b>. Many technologists suggest that ChatGPT is probably going to be one of the most transformative technological innovations we've seen, right up there with the invention of the Internet and the iPhone.</p><p>Back to my alarmist email. When I figured out that ChatGPT could write all the programs for my students, I wondered if it was going to make human programmers obsolete? Would it make my programming classes obsolete or me as a teacher obsolete? Many of you may also be feeling some amount of fear in how ChatGPT is going to affect your fields.</p><p>The Bible is full of passages encouraging us to be strong and courageous. Christians should not be people who live in fear. But I'll admit that I'm still struggling with that fear. I was curious what ChatGPT thought: <i>Should faculty be scared of ChatGPT? </i>This is the response I got:</p><p></p><blockquote>"It is understandable that some people may be concerned about the potential impact of advanced language models like ChatGPT on their jobs or fields of expertise. However, it is important to <b>remember that ChatGPT is a tool</b>, and like any tool, it can be used for a variety of purposes, both positive and negative."</blockquote><p></p><p>I really liked this response. Like any new technology, we as faculty need to have the proper perspective that ChatGPT is just a tool. Rather than avoid the tool, we need to train our students how to use such tools for positive purposes.<br /></p><p>But many of us are of course worried that students will use these tools for negative purposes, like asking ChatGPT to complete their writing assignments for them. So I asked ChatGPT: <i>How do faculty stop students from cheating with ChatGPT?</i></p> Here are six ideas it suggested:
<ol>
<li>Use plagiarism detection software: These tools can help detect when a student has submitted work that is not their own.
</li>
<li>Set strict guidelines for using AI-based writing assistance: Clearly communicate to students that using AI-based writing assistance is not allowed and what the consequences will be if they are caught.
</li>
<li>Use original topics: Assign topics specific to the class and not easily found online.</li>
<li>Encourage students to think critically: By teaching students to think critically, they will be better equipped to identify and challenge the limitations of AI-based writing assistance.</li>
<li>Have human interaction: Have a face-to-face or phone conversation with the student to discuss the topic and their writing process.
</li>
<li>Monitor student's work for inconsistencies: Look for inconsistencies in writing style, language, or tone that may indicate the use of AI-based writing assistance.
</li>
</ol>
<p>Currently, Turnitin won't help you since they are only comparing submissions with known texts. But I saw a beta version that Turnitin is working on that did an amazing job of identifying AI-generated text. Of course the next version of ChatGPT is likely to bypass the detection, forcing modification of the tool in a never ending cat-and-mouse game.
</p>
<p>The biggest advice I can give is to <b>monitor the process</b> instead of just evaluating the final product. For example, require students to use Google Docs for writing assignments since Google Docs tracks every single keystroke, making the entire history of the document available for faculty to see.
</p>
<p>
Many of you have probably discussed detection and deterrents in your departments, and if you haven't already had those discussions, I encourage you to do so soon. It's unlikely that you can just keep doing what you've always done.
</p>
<p>Here are some resources that some of you have passed on to me that you thought were really helpful in grasping what this tool is and what to do about it:
</p>
<ul>
<li><a href="https://www.nytimes.com/2023/01/16/technology/chatgpt-artificial-intelligence-universities.html">Alarmed by A.I. Chatbots, Universities Start Revamping How They Teach</a>, New York Times
</li>
<li><a href="https://www.npr.org/2023/01/09/1147549845/gptzero-ai-chatgpt-edward-tian-plagiarism ">A college student created an app that can tell whether AI wrote an essay</a>, NPR
</li>
<li><a href="https://christianscholars.com/four-ideas-for-how-professors-can-deal-with-gpt-3for-now/ ">Five Ideas for How Professors Can Deal with GPT-3… For Now</a>, Christian Scholar's Review
</li>
<li><a href="https://christianscholars.com/chatgpt-and-the-rise-of-ai/">ChatGPT and the Rise of AI</a>, Christian Scholar's Review
</li></ul>
<p>I wasn't sure how to end this talk, so I asked ChatGPT to do it for me: <i>Write a funny ending to the conclusion of a talk about ChatGPT</i>. Here's what it said:
</p>
<blockquote>"In conclusion, ChatGPT is a game changer in the world of natural language processing, it's like a magic genie that can answer all your questions. But don't worry, it's not going to take over the world, yet. Thank you for listening and I hope you enjoyed the talk, now go and create some hilarious chatbot or a virtual assistant that will entertain us all. And remember, always keep an eye on your virtual assistant, you never know when it might turn into a Skynet."
</blockquote>Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-38407115780056683912021-05-18T19:55:00.007-05:002021-05-20T15:59:19.172-05:00How to Reduce Cheating<p>I tell people all the time that being a college professor is my dream job. However, no job is perfect. Probably the worst part of my job is dealing with <b>cheating</b>. </p><p>I'll never forget my first year as a young college instructor when I discovered one of my students had turned in a program identical to another student's. When I confronted her about it in my office, she adamantly claimed that she was the sole author of her program. After questioning her for what seemed like hours and confronting her with the hard facts I had at my disposal, she finally admitted that she had been lying and had copied the program from a fellow classmate. Once she left my office, I sat down and <i>cried</i>! (I'm not much of a crier.) I took her lies very personally.</p><p>When COVID hit in March 2020 and Harding went all online, the number of cheating incidences in my classes rose significantly. I spent an incredible amounts of time dredging up evidence, confronting students, and listening to one bald-faced lie after another. In one case, I had to listen to a lawnmower mom's plea to avoid reporting the incident. It was absolutely <i>infuriating </i>dealing with the cheating on top of COVID and the stress of teaching online for the first time.<br /></p><p>Other CS instructors were also noticing the uptick of academic dishonestly, and the topic of cheating was widely discussed in the SIGCSE listserv (email list for CS instructors). What could we to do to reduce cheating in our classes? In one thread, several instructors recommended reading <a href="https://www.amazon.com/Cheating-Lessons-Learning-Academic-Dishonesty/dp/0674724631" target="_blank"><i>Cheating Lessons</i></a><i> </i>by James Lang. Lang is a professor of English who has studied cheating for years. His book is intended to distill some myths around cheating and share best practices for reducing academic dishonesty (while increasing learning).<br /></p><p>I found Lang's book to be very helpful. In fact, I implemented several of his suggestions this last academic year. What follows are my biggest takeaways from Lang's book.</p><ul style="text-align: left;"><li>There's no evidence that students are cheating more today than they were in previous decades. It just <i>feels </i>like they are more dishonest because of the cheating scandals that constantly make the news.<br /><br /></li><li>Cheating is more likely to happen in a learning environment when:</li><ul><li>The emphasis is on <b>performing well </b>on an exam rather than mastering the material<br /></li><li>There are <b>high stakes </b>riding on the outcome</li><li>Students have an <b>extrinsic motivation </b>for success, like a "good grade"<br /></li><li>Students experience <b>low self-efficacy </b>- they don't think they'll be successful </li><li>Students believe their <b>peers approve of cheating </b>and are doing it themselves<br /></li></ul></ul><ul style="text-align: left;"><li>Lang shows a number of ways other great teachers foster intrinsic motivation and learning for mastery, like giving students more opportunities and choice when it comes to assignments. What I found most immediately doable was to <b>increase the frequency of quizzes and exams</b>. Research shows that the more frequently we are asked to draw material from memory, the more likely we are to recall that information over the long term (this is called the "testing effect").<br /><br /></li><li>When giving an assessment, ensure students get <b>proper practice </b>developing the skills or applying the knowledge in the same way the assessment works. For example, if the assessment is a multiple-choice exam, students should take lower-stakes multiple-choice quizzes as practice.<br /><br /></li><li>Students will stop studying when they think they know the material they are studying well. But many students have <b>poor metacognition </b>(awareness of his or her understanding of a topic). We can help students improve their metacognition by using formative assessments during teaching. For example, giving in-class clicker questions gives students a more accurate picture of whether they know the material or not.<br /><br /></li><li>Using class time to lecture less and have students work on exercises gives students much-needed practice. It often reduces cheating by giving students with poor metacognition some self-confidence that they can actually do the homework. <br /><br /></li><li>Honor codes that encourage students to turn in cheaters don't work. Do not leave the enforcement of academic honesty to students; faculty should be primarily responsible for enforcement.<br /><br /></li><li>Students don't always know what academic honesty means. They need training to understand it.<br /><br /></li><li>When responding to cheating, <b>don't take it personally</b>. Use this as a teachable moment. Avoid simply giving the offender a slap on the wrist... research shows that once you commit your first act of dishonesty, you are more likely to commit others.<br /></li></ul>Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com3tag:blogger.com,1999:blog-20355581.post-32300041858294364702020-12-24T13:01:00.014-06:002020-12-25T15:10:05.388-06:00Fall 2020: Hello masks and goodbye President McLarty<p>If you read <a href="/2020/06/the-not-so-fun-covid-19-spring-semester.html">my last post</a>, I was somewhat apprehensive about Harding's attempt to hold in-person classes this fall. But <a href="https://www.youtube.com/watch?v=CclhyoknT8A" target="_blank">by the grace of God</a>, we made it without having to go online a single day. The photo below is from our faculty lounge where a Math professor tracked how many days we met in person. President McLarty signed it the last week of classes.
</p>
<p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMXF05I4i1s8Ki0CbjEdBvFLKDbCp1yNjupIN7LNQ0h5H4BYIkaS8-SzhNyD-AX2BXAvUWj8z-9Z9s27s2bSFuz1F78P08ch63emYWCstu1Uws34DGgxHOcC2jwvNv-JNbg2q-/s4032/20201120_112701.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="Tally of days we have met in-person and signed 'By the Grace of God! - BMc'" border="0" height="400" data-original-height="4032" data-original-width="3024" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMXF05I4i1s8Ki0CbjEdBvFLKDbCp1yNjupIN7LNQ0h5H4BYIkaS8-SzhNyD-AX2BXAvUWj8z-9Z9s27s2bSFuz1F78P08ch63emYWCstu1Uws34DGgxHOcC2jwvNv-JNbg2q-/s400/20201120_112701.jpg"/></a></div>
</p>
<p>Fall 2020 will certainly go down as one of the most memorable semesters of my teaching career. We held in-person classes during the COVID-19 pandemic while simultaneously allowing some students to attend online. I personally revamped all my classes to accommodate my remote students.
</p>
<ul>
<li>The <strong>faculty</strong> did a tremendous amount of work to make the semester a success. Managing two different groups of students taking the same class is no easy task.
</li>
<li>The <strong>administration</strong> spent many hours and significant money making the campus as safe as possible for our students. Instead of having in-person chapel as we normally do, daily chapel videos were created for students to watch online.
</li>
<li>The <strong>physical resources department</strong> worked hard putting up plastic barriers in classrooms and getting the campus ready for our students.
</li>
<li>The <strong>students</strong> showed up and did what they needed to do. They didn't get to have all the social opportunities a normal semester affords, but they wore their masks and social distanced when possible. When I was their age, I doubt I would have social distanced at all.
</li>
</ul>
<p>
<div class="separator" style="clear: both; text-align: center;"><img alt="Photo of my students wearing masks" border="0" width="400" data-original-height="3024" data-original-width="4032" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgczRnVV9whbGZyxm4t6rFLzUb0gT6XsMZIGEPVdE6i9yFrSfxJk87qF1yBpGdkZJysJHJRNPDWWNeCbE8Dpua_WKTBo-fgO2JQpadoHljyDzuWTOXnjVZW2PXwfeRnkvAVe7WN/s400/20200831_100030.jpg"/></div>
</p>
<h3>COVID and masks</h3>
<p>
Honestly, I was a little uneasy being in the classroom with my students the first few weeks of school. I read about several big universities having so many cases of COVID and wondered if the same would happen here. I read about the faculty at some universities fighting against the administration and publishing open letters warning their students of danger. At Harding there were faculty who also thought bringing students back to campus was a bad idea.
</p>
<p>But as the semester went on, I got more comfortable with the arrangement. My students wore masks and sat at least six feet apart. No one seemed to be getting COVID from being in the classroom. For office hours, I would often meet with students online or outside.
</p>
<p>
The first student to have COVID was confirmed on September 10, and the first of my students to get COVID came a week later. Four more of my students would get it in the weeks to come. As you can see from <a href="https://www.harding.edu/covid/dashboard">Harding's COVID dashboard</a> (screenshot below), the number of cases spiked in mid-October and then again in mid-November.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSbT60OqRRRKa-5I3psgQZPZ4MvAse61UwpLC7x4hjO7E2dw4SsYMELx_ANVFNrBTpQfpO4JvWgvFZaI0IACssN4cFcOhjzj7JzEk12lytHDAqWk4WeOwSLqdVO16ZyL9iVzv2/s1616/Harding+covid+dashboard.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="400" data-original-height="449" data-original-width="1616" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSbT60OqRRRKa-5I3psgQZPZ4MvAse61UwpLC7x4hjO7E2dw4SsYMELx_ANVFNrBTpQfpO4JvWgvFZaI0IACssN4cFcOhjzj7JzEk12lytHDAqWk4WeOwSLqdVO16ZyL9iVzv2/s400/Harding+covid+dashboard.png"/></a></div>
<p>If my math is right, about 8% of our undergraduates got COVID during the semester. My students told me their cases were very mild. Usually the loss of taste or a sore throat was the worst of it. Most students with COVID were <a href="https://thelink.harding.edu/the-bison/2020/12/04/harding-alumna-oversees-covid-19-dorm/">isolated in Kendall Hall</a> where I was told the students often played games in the halls and enjoyed hanging out with other students.
</p>
<p> For the students who were close contacts and had to quarantine, it wasn't so nice. Some chose to go home and quarantine, but many stayed on campus either in their dorm room or in the Heritage Inn. It was a very lonely couple of weeks. Some were able to focus on their school work, but others got behind because of their lack of focus. I personally would have gone nuts if I was confined to a small room for two weeks.
</p>
<p>Being in-person with my students this semester was so much better than teaching online. However, teaching in a mask is anything but ideal. At times I would feel out of breath or worry that some couldn't hear me. It was a lot harder to joke around with my students. When I said something funny, they couldn't see me smile, and I struggled to read their reaction. I encourage a lot of in-class participation, and when a student would holler out a question or a comment, I struggled knowing who it was that spoke. There certainly was a handful of awkward moments, but we managed to get through it.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuv4Druri2zF6YZ2ZoGYZuy1tsuqJAR5UtYlgCktf5rtQyScONB8Mh45gysGgPfyRj_rnxirYJljAubiyZgZa94Rb-5hhgFG3K3O5y9M9nW1YjI09A6ZQKhWDTHEoj9PhqXIZy/s1982/20200907_105813.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="400" data-original-height="1878" data-original-width="1982" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuv4Druri2zF6YZ2ZoGYZuy1tsuqJAR5UtYlgCktf5rtQyScONB8Mh45gysGgPfyRj_rnxirYJljAubiyZgZa94Rb-5hhgFG3K3O5y9M9nW1YjI09A6ZQKhWDTHEoj9PhqXIZy/s400/20200907_105813.jpg"/></a></div>
<h3>President McLarty</h3>
<p>
On Friday, October 30, I received an email that I could hardly believe: The Board announced that <a href="https://web.archive.org/web/20201125173942/https://www.harding.edu/president">President McLarty was retiring</a> at the end of November after a seven year stint as President. Chancellor Burks would be returning to take over the role of President until a new replacement could be found.
</p>
<p>As word of Dr. McLarty's resignation spread, I had family and friends ask if I knew anything more about the situation. I did not. I believe most of the faculty were surprised. I knew Harding's finances were not stellar after the financial blow that COVID dealt us, and I knew that our enrollment had been dropping for about four years, forcing the university to lay-off about a dozen faculty and staff last year. But I also knew that our situation was actually less bleak than many private universities. No one except the elite universities have been immune in recent years to the troubles facing higher education.
</p>
<p>For our students, McLarty's resignation was also quite a shock. Not only was the country going to potentially elect a new US President next month, Harding was also going to change presidents. We prayed a lot for Dr. McLarty at the beginning of class throughout November, and prayed for a smooth transition to new leadership.
</p>
<p>I am going to really miss Dr. McLarty. He did such a good job relating to students. He was quick to pose with students for photos. He always posted only positive messages on social media. He would tell the students the first week of chapel every fall: If you think Harding is not for you and you want to leave, come by my office first and chat with me. And he meant it. Who knows how many students stayed at Harding because of Dr. McLarty's positive influence. <a href="https://thelink.harding.edu/the-bison/2020/11/19/remembering-dr-bruce-mclartys-presidency/">An article from <cite>The Bison</cite></a> echoes many of the same sentiments.
</p>
<p><a href="/2012/11/hardings-president-mclarty.html">I wrote about</a> the Board's decision to name Dr. McLarty as Harding's next President in November 2012, and I wrote a post summarizing <a href="/2013/09/president-mclartys-first-120-days.html">Dr. McLarty's first 120 days</a> back in September 2013. I'll conclude with this photo that I took on November 20, 2020 of Dr. McLarty leading the campus in an end-of-the-semester celebration out on the front lawn. You can see a <a href="https://www.youtube.com/watch?v=CclhyoknT8A" target="_blank">video of the event here</a>.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw4RUh4IsjSo9Sk_7_ZixL-2S0iVtT1IdU3YOsSFZm_7OD7k3-gJ9RY2NnNvldweFHFK4V3jgzn22QW3IzkOPlv9AM05oc-GNveUv_9mb0zUdwikUIQoaoRJC2yr9k1g4TPbX4/s7920/20201120_092845.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="400" data-original-height="2064" data-original-width="7920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw4RUh4IsjSo9Sk_7_ZixL-2S0iVtT1IdU3YOsSFZm_7OD7k3-gJ9RY2NnNvldweFHFK4V3jgzn22QW3IzkOPlv9AM05oc-GNveUv_9mb0zUdwikUIQoaoRJC2yr9k1g4TPbX4/s400/20201120_092845.jpg"/></a></div>Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-32179036966414463712020-06-28T15:37:00.001-05:002020-06-29T07:52:18.473-05:00The not-so-fun COVID-19 spring semester<p>I've been wanting to write down my thoughts about the Spring 2020 semester for a while. This is the semester that took us all by surprise and forced us college professors to move from in-person classes to on-line classes in a matter of days.
</p>
<p>I remember one February afternoon chatting with a colleague in the locker room after playing basketball. I asked what he thought about this coronavirus thing that was getting a lot of attention in the news. He said, "I wouldn't be surprised if Harding doesn't allow our students to return after Spring Break." I was shocked. That would be crazy!
</p>
<p>I was really looking forward to our upcoming Spring Break in March. Becky and I were traveling to Portland together so I could attend the <a href="https://sigcse2020.sigcse.org/">SIGCSE 2020 Symposium</a>. This would be our first get-away without the kids this year. I remember teasing my students the week before our break: "Don't be the one that brings coronavirus back to campus!" We would all laugh; none of thought it was all that serious.
</p>
<p>However, a coronavirus outbreak in Seattle had some conference attendees (and my parents) worried. The SIGCSE conference organizers were telling us they were going ahead with the conference, but they were also offering partial refunds for those who wanted out. My parents kept asking me if they thought it was safe, and honestly, I wasn't worried at all.
</p>
<p>As it got closer to our March 10 flight and more and more news spread fear about the virus, I also started worrying. On March 8, the governor of Oregon <a href="https://www.oregon.gov/newsroom/Pages/NewsDetail.aspx?newsid=36109">declared a State of Emergency</a>. Becky and I decided maybe we shouldn't go after all. I hated cancelling, but I knew it was probably the best move to make. Thankfully the airlines, hotels, and conference organizers were all very understanding as I cancelled all our tickets and reservations just two days before we were supposed to leave.
</p>
<p>My family then decided to visit my parents in northwest Arkansas. It was there that we learned that the SIGCSE 2020 Symposium was cancelled the day it was to start. We also learned that Harding, like so many other universities, would be <a href="https://harding.edu/public-safety/emergency-management/coronavirus-notifications/shift-to-online-coursework">moving all courses on-line</a>. Students were not going to be allowed to return to campus. Toilet paper started selling out. A few people broke out face masks in public places. Our church cancelled Sunday's service. It was getting really weird very fast.
</p>
<p>We returned to Searcy towards the end of Spring Break so I could start preparing to move my classes on-line. I was teaching five classes, my usual four CS courses and one additional course for the MIS department (the previous instructor had to leave at week five). Thankfully, I had already been using Canvas to post assignments and class videos. I was already familiar with the tools I'd need to use to go all on-line. For most CS professors, the transition wasn't nearly as difficult as it was for our colleagues in other departments.
</p>
<p>I developed a plan: One day a week we'd meet synchronously so I could see my students' faces and check-in. The other days I'd just post a video of the day's lecture. Reading and homework assignments would continue as usual, but I cut out some content that I'd planned on covering. I also dropped project presentations from all my courses. I would continue to hold office hours at the same times and could chat via Zoom.
</p>
<p>Many of my students made the transition to online without too much difficulty. But a number of them did not. It became apparent early on that some student didn't have reliable internet access. Some were taking on jobs or other responsibilities that would take away from their class work. Some were having family emergencies or personal issues. And some just lacked the personal discipline to keep up with their courses.
</p>
<p>Most of my synchronous meetings had an absentee rate of around 25%, and it got worse and the semester progressed. When I checked to see how many students were watching class videos, I was very disappointed to see that a significant number of students weren't watching anything at all. It was not surprising that some of my students were asking how to do X when they hadn't watched the videos where I described X.
</p>
<p>For most of the time we were online, I was honestly frustrated and somewhat depressed. I was frustrated that I couldn't get many of my students to continue engaging in their courses. I felt a huge gulf between us as our interactions were now only online. I was depressed that I sat in my office on a beautiful campus that was totally devoid of life. All of the fun activities, Spring Sing, graduation, etc. were no more. Even my <a href="https://www.hardingacademy.org/news-detail?pk=1178580&fromId=266320">kid's school went on-line</a>, so the kids were home with Becky with only Zoom meetings to interact with the outside world. And I worried a lot about my students. Some were not communicating with me at all. I had to call several of them to ask why they were not turning in assignments, and I heard all kinds of answers ranging from "I'm just not good at online" to "I'm depressed."
</p>
<p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWcEacLbJF9Mif0Kl6Gv3k6aE2WsdVUye_47Ghphs_pScbdzl4Hsn4KeItfW91a6kSxahJ5myyqrRP37QYs64vWFTHw_d5nWUZimuWBhotg1-5_jAmNHHAUKIaqwwYjToUUm-6/s1600/20200409_121707.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWcEacLbJF9Mif0Kl6Gv3k6aE2WsdVUye_47Ghphs_pScbdzl4Hsn4KeItfW91a6kSxahJ5myyqrRP37QYs64vWFTHw_d5nWUZimuWBhotg1-5_jAmNHHAUKIaqwwYjToUUm-6/s320/20200409_121707.jpg" width="320" height="240" data-original-width="1600" data-original-height="1200" /></a></div>
</p>
<p>Teaching online, in my opinion, is a poor substitute for learning in person. Of course it can be done... that's primarily the way I learn myself. But there's so much communication that is lost online. I can no longer read my students' body language to see if they understand what I'm saying. The delay in a Zoom meeting or the faces looking all over <a href="https://www.bbc.com/worklife/article/20200421-why-zoom-video-chats-are-so-exhausting">require my brain to work overtime</a> and drain me. Sometimes it's even difficult for me to remember if I've said something before because everything I say online is from sitting in the same physical place. When I teach in person, I'm physically moving, I'm looking at specific individuals, I'm seeing faces. All of that is lost online.
</p>
<p>For college students who still learning how to learn, the online experience presents difficulties. Instead of physically moving your body, smiling at your friends, laughing with those around you, seeing the professor's gestures, moving your eyes from your professor to your notes, all of which <a href="https://medium.com/swlh/how-physical-experiences-improve-our-ability-to-learn-e952eb87766e">form memories and aid in learning</a>, you experience only approximations of the same thing looking at a computer screen. For those who are extreme introverts, going all online might sound wonderful. But losing a physical connection to those around us is a huge loss to everyone.
</p>
<p>Harding University is scheduled to start classes in nine weeks. The goal is to meet in-person here in Searcy. But with COVID-19 spiking here in Arkansas and other states, there are a lot of questions about how feasible it is for us to be physically together. Like most universities, Harding took a big financial hit last spring when we refunded all the school dorm and cafeteria fees, and we lost all the revenue that on-campus events generate. We <em>need</em> to be in-person in the fall, but we are preparing to be all online.
</p>
<p>Although I am anxious about the future, I trust God will somehow get us through this.
</p>
Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-56742541216132751182020-01-04T10:57:00.000-06:002020-01-04T10:57:46.507-06:00Favorite books of 2019<p>Reflecting back on 2019, here are five of my favorite books:
</p>
<ol>
<li><p><a href="https://www.amazon.com/Make-Stick-Science-Successful-Learning-dp-0674729013/dp/0674729013/ref=mt_hardcover?_encoding=UTF8&me=&qid=1578153238">Make It Stick</a> by Brown, Roediger, and McDaniel</p>
<p>
This is probably the single most helpful book I've read as an educator. The authors point out the common mistakes
and bad practices that limit effective learning. Then they share best practices, backed by the latest research, for making information stick.
I've shared many of these practices with my students this past year and re-organized my classroom activities to
support these best practices.
</p>
</li>
<li><p><a href="https://www.amazon.com/Mindset-Psychology-Carol-S-Dweck-ebook/dp/B000FCKPHG">Mindset: The New Psychology of Success</a> by Carol S. Dweck</p>
<p><cite>Mindset</cite> was a gift to me and several other university instructors from zyBooks co-founder Smita Bakshi.
Smita loved the book for the same reasons that I now do: replacing a fixed mindset with a growth mindset can lead to more personal and professional success. As a university professor, I also have the opportunity to encourage a growth mindset in my students.
</p>
</li>
<li><p><a href="https://www.amazon.com/Mindset-Psychology-Carol-S-Dweck-ebook/dp/B000FCKPHG">You Are What You Love: The Spiritual Power of Habit</a> by James K. A. Smith</p>
<p>
My Wednesday night class at church read through Smith's book together last spring. Smith shares how our loves are shaped by the rituals and practices we adopt from our culture. He compels us to re-shape our thinking and rituals so we love God instead.
</p>
</li>
<li><p><a href="https://www.amazon.com/Excellent-Sheep-Miseducation-American-Meaningful/dp/1476702721">Excellent Sheep: The Miseducation of the American Elite and the Way to a Meaningful Life</a> by William Deresiewicz</p>
<p>
Deresiewicz calls out elite universities and the whole system that supports them for their inability to develop students that have purpose in life. It opened my eyes to the crazy train that many students ride when going the elite university route.
The book made me very thankful to be at a school like Harding.
</p>
</li>
<li><p><a href="https://www.amazon.com/Sleeping-Giants-Authentic-Insights-Building/dp/B07P9B3WZ8">Sleeping Giants: Authentic Stories and Insights for Building a Life That Matters</a> by Nathan Mellor</p>
<p>
Nathan and I were classmates at Harding in the mid 1990s. I purchased his book after hearing him speak this past August at Harding's Faculty Pre-Session Conference. Nathan's talks and his book are chock full of personal stories growing up and the many life lessons they teach. I particularly enjoyed his stories about around Chic-fil-A founder S. Truett Cathy. "It's my pleasure."
</p>
</li>
</ol>Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-39835618408916443442019-08-16T11:02:00.000-05:002019-10-24T09:26:13.652-05:00No laptops or phones in class<p>I've adopted a policy of not allowing laptops or phones in class. Isn't that a little odd for a <i>computer science</i> professor? Here are a few good reasons:
</p>
<ol>
<li>Instructors with similar bans have found <a href="https://www.insidehighered.com/news/2018/05/11/ohio-state-professors-technology-ban-finds-positive-reaction-and-results">the ban improves grades and students are fine with it</a>.
</li>
<li><a href="https://www.insidehighered.com/news/2018/07/27/class-cellphone-and-laptop-use-lowers-exam-scores-new-study-shows
https://www.sciencedirect.com/science/article/pii/S0360131512002254">Students not using electronics are harmed when others do.</a>
</li>
<li>Having a computer out often leads to multitasking, and <a href="https://hbr.org/2010/12/you-cant-multi-task-so-stop-tr">humans cannot multitask well.</a>
</li>
<li><a href="https://www.entrepreneur.com/article/288829">Multitasking lowers your IQ and may damage your brain.</a> Yikes!
</li>
<li><a href="https://effectiviology.com/handwriting-vs-typing-how-to-take-notes/">Taking notes by hand helps you remember the information better.</a>
<li>And finally, it helps me to see your eyes and tell that you are engaged.</li>
</ol>
<p>Thank you, Frank Vahid, for providing some of the links.
</p>
Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-39020366441558781442018-07-31T14:20:00.000-05:002018-08-01T11:03:01.277-05:00Latest book: Mobile App Programming for Android<p>This week I'm putting the final touches on my latest zyBook: <cite>Mobile App Programming</cite>. If you aren't familiar with <a href="https://www.zybooks.com/">zyBooks</a>, they are online books that include animations and interactive questions. (I co-authored the <a href="https://www.zybooks.com/catalog/web-programming/">Web Programming</a> zyBook a few years ago and use it in my web development courses.)
</p>
<p><cite>Mobile App Programming</cite> shows how to develop Android apps using Java. The book contains several complete Android apps: Pizza Party, Lights Out, Dice Roller, The Band Database, and others.
</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5AqUjoYPPnU-5hwoxY3CN0_-AZjuzS5oFmlX5qRU_NYlbSJT54OgW4YxMY3UlHNvCUMFA6pfOm68fFlgTKaALiScfQ72mraalXEZa-MwXbfTslmjWxHIMJxAY_NjklEEkb0FV/s1600/study_helper.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5AqUjoYPPnU-5hwoxY3CN0_-AZjuzS5oFmlX5qRU_NYlbSJT54OgW4YxMY3UlHNvCUMFA6pfOm68fFlgTKaALiScfQ72mraalXEZa-MwXbfTslmjWxHIMJxAY_NjklEEkb0FV/s1600/study_helper.gif" data-original-width="274" data-original-height="454" /></a></div>
<p>Below is a summary of the <cite>Mobile App Programming</cite> chapters. Contact <a href="mailto:sales@zybooks.com">sales@zybooks.com</a> if you'd like to be alerted when the zyBook is ready for evaluation. You can beta test it this fall if you'd like.
</p>
<ol>
<li><strong>Introduction</strong>: Android platform, Android Studio, app resources, debugging
</li>
<li><strong>Layouts and Widgets</strong>: Various layouts, widgets, event handling, styles and themes
</li>
<li><strong>Activities and Intents</strong>: Activity lifecycle, restoring state, explicit and implicit intents
</li>
<li><strong>Menus, Dialogs, and Touch</strong>: app bar, dialogs, context menus, touch and gestures
</li>
<li><strong>Fragments</strong>: Creating fragments, fragment lifecycle, fragment and activity interaction, RecyclerView
</li>
<li><strong>Working with Data</strong>: Shared preferences, file I/O, SQLite, settings, web APIs, Volley, Room
</li>
<li><strong>Running Background Tasks</strong>: Background threads, AsyncTask, Handlers, Loopers, services, notifications
</li>
<li><strong>Graphics, Animation, and Sound</strong>: Shape drawables, animation drawables, property animations, custom views, playing sounds, SurfaceView
</li>
<li><strong>Sensors, Camera, and Location</strong>: Motion sensors, taking photos, Google Play services, Google Maps
</li>
<li><strong>Testing</strong>: TDD, unit tests, JUnit, integration tests, Espresso, UI tests
</li>
</ol>
<p><br><br>A big thank you to the zyBook staff that helped in producing this book: Roman, Kenny, Liz, Evan, the college interns that proofread the text, and tech support.
</p>
<p>zyBooks don't usually have a dedication page, but I dedicate this book to my wife <strong>Becky</strong> who encouraged me these past 18 months while I worked on my book and my boys <strong>Ethan</strong> and <strong>Braden</strong> who love to play my Android apps. I love you guys!
</p>Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-90480828557104895732018-07-25T14:16:00.000-05:002018-07-25T14:16:00.137-05:00Kids Coding Adventures 2018<p>
Today was the final day of <a href="https://www.harding.edu/fmccown/camp/">Kids Coding Adventures 2018</a>, a coding camp that I've directed for the past three years at Harding University. 23 kids attended, who ranged from 2nd thru 4th grade (a few 5th graders snuck in). I had two fantastic helpers from Harding Academy (Mason and Anna) as well as my oldest son.</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgff9V1ZjFD5UZ-9Kapfhj1rOyk-z1tCT5r7evr2Q6CORcPyPggOufWB_gBiN5BsvdA_zJ36DXknld5uXYEGuJWDWaq33YpBOqe7kcjR2vldFZB22qt4cOfzVcXBxNDO1dYj59s/s1600/20180723_093520.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgff9V1ZjFD5UZ-9Kapfhj1rOyk-z1tCT5r7evr2Q6CORcPyPggOufWB_gBiN5BsvdA_zJ36DXknld5uXYEGuJWDWaq33YpBOqe7kcjR2vldFZB22qt4cOfzVcXBxNDO1dYj59s/s400/20180723_093520.jpg" width="400" height="300" data-original-width="1600" data-original-height="1200" /></a></div>
<p>
In previous years we used Tynker, but this year we used Microsoft's <a href="https://minecraft.makecode.com/">MakeCode</a> to program Minecraft mods using blocks or JavaScript. This required us to use <a href="https://education.minecraft.net/">Minecraft Education Edition</a>, which is a special version of Minecraft that interacts with programming environments like MakeCode.
</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8QuZNlwTyxR5NEGmd8LCJPeeUaWfAtwnUqum6xo2pjd3pJfRJednHsr-7p9-UJXRpr_o02FV_Klghm_jU18cSPb5Bt8Lr7TV38NsJjVh4unujPWqsP2LhF51S93_QGASqdkOy/s1600/makecode-square.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8QuZNlwTyxR5NEGmd8LCJPeeUaWfAtwnUqum6xo2pjd3pJfRJednHsr-7p9-UJXRpr_o02FV_Klghm_jU18cSPb5Bt8Lr7TV38NsJjVh4unujPWqsP2LhF51S93_QGASqdkOy/s400/makecode-square.png" width="400" height="345" data-original-width="408" data-original-height="352" /></a></div>
<p>A few of my observations, in no particular order:
</p>
<ul>
<li>Kids absolutely <em>love</em> Minecraft, so they were really excited about camp. But loving Minecraft is a double-edged sword: It's challenging to keep kids on task when they can easily start "playing" Minecraft.
</li>
<li>Minecraft Education Edition is only $5, which is really inexpensive. And it's easy to install. However, each user must have a special Office 365 account, which is a headache for our IT guys to setup.
</li>
<li>Using MakeCode was challenging, especially for the 2nd graders. You must flip back and forth between the MakeCode window and Minecraft, and flip back and forth between chat and regular mode in Minecraft.
</li>
<li>Two major usability problems with MakeCode:
<ol>
<li>The responsiveness is pretty bad. I saw frustrated kids clicking multiple times on a button that should have immediately responded, but it would take seconds to process the first click.
</li>
<li>When you mistype a chat command, there's no feedback that the command was mistyped. This happens more often than you might imagine.
</li>
</ol>
</li>
<li>I discovered three problems in MakeCode the first day: a tutorial had erroneous logic, and MakeCode had 2 bugs, one of which would completely erase all your code. (I've reported all the issues to Microsoft.)
</li>
<li>Most kids struggled more than I thought they would with creating objects using the "fill with" command. We focused on using only the x and y axis, but it was still tough for them to convert a simple picture into code. Next time I'll spend more time doing simple exercises to get these ideas across.
</li>
</ul>
Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-61476256127627224012017-07-22T00:08:00.003-05:002017-07-22T21:35:56.958-05:00That's so Bellingham!<div dir="ltr" style="text-align: left;" trbidi="on">
<p>
I've spent the past 5 weeks in Bellingham, Washington, working at <a href="https://faithlife.com/">Faithlife</a> on revamping the <a href="https://play.google.com/store/apps/details?id=com.logos.androidlogos&hl=en">Logo Bible app</a> for Android. My family is here with me, and in another week we'll be heading back to Searcy.
</p>
<p>
We've really enjoyed our time in the northwest. <a href="https://en.wikipedia.org/wiki/Bellingham,_Washington">Bellingham</a> is located near the Pacific and just 20 miles south of Canada. We've spent most of our weekends traveling to nearby destinations like Mount Baker, Seattle, Vancouver, and Olympic National Park. Below are some landscape photos I took at Olympic just to give you a sense of the incredible beauty in this area.
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMFr7a8XTjmE7Va5NCIY6bAsTFuGmqjXMF0rGLlXGgrLPVOrTywF7CnpJmd8_bKTx-jLUeZQUKmAp3m6heL5eqaPAt-EzpjPmISLmO_dLtiMV_KFmO6lQvCqrV4zb-8XfgEOma/s1600/20170715_141541.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="291" data-original-width="1600" height="73" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMFr7a8XTjmE7Va5NCIY6bAsTFuGmqjXMF0rGLlXGgrLPVOrTywF7CnpJmd8_bKTx-jLUeZQUKmAp3m6heL5eqaPAt-EzpjPmISLmO_dLtiMV_KFmO6lQvCqrV4zb-8XfgEOma/s400/20170715_141541.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJYM9Ox0WfD6W6MuY18_T3PtjmX0A3jQHVNKKgYcuE5dMXbGu66d9H4RrZslQEX4JJ0byklUiBgJoKgvvxIOi9nGlaPI-BGvDicqGuIVOTQbF6MC15d-aV_6KRdCYrWZNAmY3m/s1600/20170715_184922.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="292" data-original-width="1600" height="73" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJYM9Ox0WfD6W6MuY18_T3PtjmX0A3jQHVNKKgYcuE5dMXbGu66d9H4RrZslQEX4JJ0byklUiBgJoKgvvxIOi9nGlaPI-BGvDicqGuIVOTQbF6MC15d-aV_6KRdCYrWZNAmY3m/s400/20170715_184922.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJMtIbMg7UxSUuN310VcAhzGNyV_z7bb0DAWyDkvXETrvuXY3BcunW-9pQObZZ5AVFdnGJT6-ofByaFXuNNjrZAKFPKt_Bp6kKCgyWx6SB9IYCZowFcsWpYbmwINSWiKo16zDv/s1600/20170716_103355.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="268" data-original-width="1600" height="67" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJMtIbMg7UxSUuN310VcAhzGNyV_z7bb0DAWyDkvXETrvuXY3BcunW-9pQObZZ5AVFdnGJT6-ofByaFXuNNjrZAKFPKt_Bp6kKCgyWx6SB9IYCZowFcsWpYbmwINSWiKo16zDv/s400/20170716_103355.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ6mp23DqkysbxCJxY_UBpGpbR4Rbc41j05pczCjrVut4CdLMPC-sAX6DITsMrSNq4qQJoUheivwHOu9BdFxDvkcGMdaL81UNFSaHHQFuCEOVGmLKhK1SMriFBodEiOyHLdgqt/s1600/20170716_123214.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="284" data-original-width="1600" height="71" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ6mp23DqkysbxCJxY_UBpGpbR4Rbc41j05pczCjrVut4CdLMPC-sAX6DITsMrSNq4qQJoUheivwHOu9BdFxDvkcGMdaL81UNFSaHHQFuCEOVGmLKhK1SMriFBodEiOyHLdgqt/s400/20170716_123214.jpg" width="400" /></a></div>
</div>
<p>
Working at Faithlife has been a huge blessing. I've worked with a very talented group of guys who have taught me a lot. I'm especially thankful to David Mitchell, an alumnus of Harding's computer science dept, who arranged for me to spend 6 weeks here as a visiting developer.
</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQVCEkInprUomht2OP8hGlye6ABF1UThQlJ-a1VwvTNA9bkQSg4RsvrtVjttxJRCB6N34vSk3Mu-nW8Ec7-tqxqLDaM8vcx0krrLNNhVp7NpkUA94hOORPELIhWveBd1KSfvSY/s1600/20170622_124500.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQVCEkInprUomht2OP8hGlye6ABF1UThQlJ-a1VwvTNA9bkQSg4RsvrtVjttxJRCB6N34vSk3Mu-nW8Ec7-tqxqLDaM8vcx0krrLNNhVp7NpkUA94hOORPELIhWveBd1KSfvSY/s400/20170622_124500.jpg" width="225" height="400" data-original-width="900" data-original-height="1600" /></a></div>
<p>
I can't say enough positive things about Faithlife. They have a company culture that encourages excellence, and their mission is to service the Church. The vibe I get from the employees is very positive; everyone seems to really enjoy their work. I was even able to have coffee with the CEO, <a href="https://faithlife.com/bob-pritchett/about">Bob Pritchett</a>, who eagerly desires to meet one-on-one with all his employees, even the interns!
</p>
<p>
Speaking of interns, shout out to Stephen Hoffmann, one of our current CS students, who is doing a summer internship at Faithlife. Stephen competed in a company-wide hackathon yesterday, and his team was awarded the "Awesomeness Award" for developing a live-streaming capability that churches could use in during worship!
</p>
<p>
What am I going to miss about this place?
</p>
<ul>
<li>The fantastic weather, which at this time of the year is lots of sun, low humidity, and temperatures during the day around 70 degrees.
</li>
<li>My work. I enjoy doing software development and working with a great group of guys. (But I also <em>really</em> enjoy teaching... it's my dream job.)
</li>
<li>The church. We've worshiped with a local church and made some great connections. We are thankful for those who invited us into their homes.
</li>
<li>The pro-environment focus. People here are very conscientious about treating the planet well. You won't see a single plastic bag at the grocery store, and every restaurant allows you to recycle your used plates, forks, etc.<br/>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1QykEDI1E1ifF85x6sKoHUeacrdyOlqAm1Dsj3QfIqIU-Tkb6OP3mNvUOroHcob2sW6gWlwQH7Qwmhs3QMT9Q8fzDN04KdVOs2UJkKhZNxxbqg8jT9t2PLjriZNFmXWEWFnPT/s1600/20170719_204621.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1QykEDI1E1ifF85x6sKoHUeacrdyOlqAm1Dsj3QfIqIU-Tkb6OP3mNvUOroHcob2sW6gWlwQH7Qwmhs3QMT9Q8fzDN04KdVOs2UJkKhZNxxbqg8jT9t2PLjriZNFmXWEWFnPT/s400/20170719_204621.jpg" width="400" height="225" data-original-width="1600" data-original-height="900" /></a></div>
</li>
<li>Walking to work! We live only a block away from work, and it's so nice to be able to come home for lunch. Many days I never even get into an automobile!
</li>
</ul>
<p>
What am I <em>not</em> going to miss? Hearing loud/drunk people leaving the bar at 2am. Living downtown is cool for 6 weeks, but I'm thankful to be going back to a house in a quiet neighborhood! :-)
</p>Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-60739176119203859352017-05-11T09:39:00.000-05:002017-05-18T06:44:03.223-05:00It's your fault you didn't get that internship (and how to turn things around)<div dir="ltr" style="text-align: left;" trbidi="on">
<div>
Summer has began, and many of my students are off to exciting places to do summer internships. However, some of my students applied to several internships but didn't get a single offer. Why not? Are there just not enough internships to go around?<br />
<br />
If you want to know why you didn't get an internship, you need to understand what happened when you applied.<br />
<br />
Your potential boss (or likely a designated person in charge of internships who we'll call the "recruiter") probably received a number of resumes of students interested in the internship. The recruiter briefly scanned the resumes for promising candidates who appeared to do good school work and did projects outside of the classroom. If you haven't put in the effort in your school work, you likely didn't make this first cut. If all you are relying on is just your school work to get noticed, you may also have not made the cut.<br />
<br />
In some cases, the recruiter may have accepted your resume, even if it wasn't necessarily stellar. But the recruiter wanted a little more information about you, so they called a few of your professors.
<br />
<br />
What could I say when I was asked, "Do you think so-and-so would make a good employee?" As I reflect on the previous semester when you were in my class...<br />
<ul>
<li>You slept in class or acted completely uninterested. </li>
<li>You turned in late work repeatedly and always had an excuse.</li>
<li>Your projects were turned in with obvious flaws.</li>
<li>You never asked me for help or even tried to form a relationship with me outside of class when given opportunities to.</li>
<li>You rarely replied to my emails or told me you never check your email.</li>
</ul>
I wish I could have said, "Yes! I'd hire them in a second!" Instead, I had to be honest and tell the recruiter what it was like having you as a student. Does the recruiter want to pay someone who doesn't do their work on time, always has an excuse, turns in code with bugs, avoids personal interactions with others, and is generally uncommunicative?<br />
<br />
Here's my point: <b>It's your fault you didn't get than internship.</b> But it doesn't have to continue to be this way.<br />
<ul style="text-align: left;">
<li>Show interest in class and ask questions. </li>
<li>Start putting effort into your course work. Turn in homework and projects that you obviously put considerable effort and time into.</li>
<li>Make relationships with the faculty. Stop by their office for help when you are struggling or even just to say "hi".</li>
<li>Take ownership for your mistakes and avoid making excuses.</li>
<li>Reply to your email. I'm not sending you email just for fun.</li>
<li>Work on side projects just for fun. Or at least for professional development. </li>
<li>Have a good attitude!</li>
</ul>
</div>
You don't have to be a 4.0 student to get an internship. You just need to show that you are willing to work, pleasant to be around, and take responsibility for yourself.<br />
<br />
I want <i>all </i>my students to get internships next summer!</div>
Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-69863757211734392522016-07-28T08:47:00.001-05:002016-08-01T12:55:21.308-05:00Web Programming book and kids' coding camp<p>
My Sabbatical plans changed somewhat last spring, and I ended up putting all of my time into writing the "Web Programming" book to be released in beta this fall by <a href="https://zybooks.zyante.com/">zyBooks</a>. If you are not familiar with zyBooks, they are online books that feature animations and interactive questions. Students are much more engaged when interacting with zyBooks than with traditional print books. Plus zyBooks are usually much less expensive.
</p>
<p>
The "Web Programming" zyBook covers HTTP, HTML, CSS, JavaScript, jQuery, mobile, PHP, Node.js, and databases. It's been a great experience writing the book, and I've learned a lot in the process. I'm finishing the final chapter in the next few weeks. Contact zyBooks if you would like to preview the book.
</p>
<p>
This week I ran the <b>Kids' Coding Adventures</b> camp for 20 kids in grades 1-3. It was the first coding camp in Searcy for young kids that I'm aware of. We used <a href="https://www.tynker.com/">Tynker</a>, a platform for teaching coding to kids and adults. The kids absolutely <em>loved</em> it!
</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5D42EmJluXontEeVvu41iAwpu5lkmveYMsQwOB4hJC6ob5Rx3YFKyHHrsaYYIIYYvB6vyncO5-RRKHLKoaC-zseAyycowNy1by8QQULpf6H456ZaR86U49S8kZKBd3YvfGbp_/s1600/07-26-2016-6922.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5D42EmJluXontEeVvu41iAwpu5lkmveYMsQwOB4hJC6ob5Rx3YFKyHHrsaYYIIYYvB6vyncO5-RRKHLKoaC-zseAyycowNy1by8QQULpf6H456ZaR86U49S8kZKBd3YvfGbp_/s400/07-26-2016-6922.jpg" width="267" height="400" /></a></div>
<p>
What would make me want to spend three days with young kids teaching coding? I attended a Logo programming camp in the 3rd grade, and it was like I had discovered an amazing treasure! The camp introduced me to something that would later be my profession. I wanted to provide the same experience for the kids of Searcy. Plus my two sons <em>really</em> wanted me to run the camp, and it's hard to say "no" to such enthusiasm.
</p>
<p>
The Harding website has a <a href="http://hunet.harding.edu/wordpress/news/little-coders/">nice write-up about the camp</a>.
</p>
Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-70223912406483451052016-01-12T14:26:00.000-06:002016-08-22T16:31:50.673-05:00My Sabbatical<p>
I'm very grateful that Harding has allowed me to take a one semester Sabbatical. I owe a lot of thanks to Gabriel Foust, my colleague who has been working on his Ph.D. at Texas A&M for the past four and a half years and has finally returned to Harding so he can take over my Spring course load. Thanks, Gabe!
</p>
<p>
My plans for the Spring have been in flux for a while, but they've finally ironed themselves out. I'll be spending a portion of my time writing some book chapters for a Web Development book for a well-known publisher. There is a team of writers for the book, and it will hopefully be available in the Fall. My Web Dev courses will begin using the book in the fall as well.
</p>
<p>
Additionally I'll be doing some software development for Flatirons Solutions, a company out of Bolder, CO, that I worked with <a href="/2014/05/a-tale-of-two-cities-searcy-and-boulder.html">a few summers ago</a>. I'll be exposed to some new technologies that I will hopefully incorporate into my courses here at Harding.
</p>
<p>
A lot of my students thought I'd be gone this semester, but I plan on being in my office as much as possible and being available, so feel free to stop by and say hello!
</p>
<h4>Edit 7-28-16</h4>
<p>
The book ended up being the focus of Sabbatical. The book is called <i>Web Programming</i> and will be available to the general public at the end of 2016 from <a href="http://zybooks.zyante.com/">zyBooks</a>. Topics include: HTTP, HTML5, CSS, JavaScript, mobile, Node.js, PHP, and databases.
</p>Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-28483330254131504212015-10-05T10:46:00.000-05:002015-10-05T14:04:34.055-05:0020 years ago<p>It was twenty years ago on this day (October 5, 1995) that my college roommate Jeff Gammel drowned while swimming in Lake Cortez in Hot Springs Village. He was was swimming with a few other guys from Louisiana Tech but got separated from them at one point. When the Tech kids reached the shore and didn't find Jeff, they called the police. Divers found his body the next morning. No one is sure what caused him to drown, but my guess is that he cramped up or something and wasn't able to get to shore in time.
</p>
<p>
Jeff was in Hot Springs Village for the weekend along with his best friend Brandon Procell to be with the Hot Springs Village church youth group for an area-wide get together. Jeff and Brandon regularly traveled to Hot Springs Village to work as youth ministers for the youth group. In other words, <i>Jeff lost his life while serving others</i>. Although Jeff's death hit us all like a ton of bricks, we knew that he was just doing what his Savior did. And we knew that he had received his reward.
</p>
<blockquote>"For whoever wants to save their life will lose it, but whoever loses their life for me will find it." - Matthew 16:25</blockquote>
<p>
Below is the <a href="http://digital.harding.edu/thebison/1995-10-13.pdf">article</a> from the Harding University Bison that talked about Jeff's accident and the chapel program the following Monday.
</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioODpYZiALQ-uBrxeIOuejFsu_cjYeHM1CFG4SuM0MN4RiYOLlqVPF59XbQaYiHUowPoEnBHRNbrUP0JlSzvpMEezGFwMCAvMeYChNww8krS_u8-MZpmaRlk7uyhAyAkRgaUDt/s1600/jeff+gammel+-+bison.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioODpYZiALQ-uBrxeIOuejFsu_cjYeHM1CFG4SuM0MN4RiYOLlqVPF59XbQaYiHUowPoEnBHRNbrUP0JlSzvpMEezGFwMCAvMeYChNww8krS_u8-MZpmaRlk7uyhAyAkRgaUDt/s400/jeff+gammel+-+bison.png" /></a></div>
Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-31143729114566627262015-08-21T11:07:00.003-05:002015-08-21T11:07:46.186-05:00Finishing up my first summer with HUB-CAPS<p>This summer I had the opportunity to work with HUB-CAPS (Harding University Branch of the Center for Advanced Public Safety), run by my colleague <a href="http://www.harding.edu/dsteil/">Dana Steil</a>. We employed seven Harding students to help us on various software projects for the Arkansas and Mississippi highway patrols.
</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUCG2Djf7uxlaX6nFCzoZqs-jKH2suyF8PxoH00r6KpRP80LBye1XaeY0svxvt0NPT97bEf5e2fQGU0uxAzQ2VcwhEonGnT3xZ37c4XlRm2f4X4352ccSZ1rpprb01ktaJ7X5F/s1600/hubcaps+summer+2015.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUCG2Djf7uxlaX6nFCzoZqs-jKH2suyF8PxoH00r6KpRP80LBye1XaeY0svxvt0NPT97bEf5e2fQGU0uxAzQ2VcwhEonGnT3xZ37c4XlRm2f4X4352ccSZ1rpprb01ktaJ7X5F/s400/hubcaps+summer+2015.jpg" /></a></div>
<p>
What occupied most of time this summer was developing a system that allows Mississippi patrol officers to enter paper tickets into a web-based SPA application. We used AngularJS on the front-end and an ASP.NET MVC app that exposed web APIs on the back-end. Mallory Eaton did a lot of the client-side development work and built some nice e2e tests. I'm proud of the app we developed which is currently in beta testing.
</p>
<p>I'm also thankful to Dana Steil for giving me the opportunity to work with his group.
</p>
<p>Our students are starting to arrive for the beginning of the fall semester. Time to start redirecting my energies into my courses.
</p>Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-78116029137592718832015-03-06T12:56:00.000-06:002015-03-23T08:53:05.723-05:00The MEAN stack<p>I've developed some notes/outlines for my <a href="http://www.harding.edu/fmccown/classes/comp431-s15/">Web Development 2</a> course on the MEAN stack (MonogoDB, Express, AngularJS, and Node) that I thought I'd share here. They introduce each MEAN component and contain code snippets that build a web app that uses a RESTful web service. Enjoy!
</p>
<ol>
<li><a href="https://www.harding.edu/fmccown/classes/comp431-s15/notes/notes12.html">MEAN Stack</a>
</li>
<li><a href="https://www.harding.edu/fmccown/classes/comp431-s15/notes/notes13.html">Node.js</a>
</li>
<li><a href="https://www.harding.edu/fmccown/classes/comp431-s15/notes/notes14.html">Express</a>
</li>
<li><a href="https://www.harding.edu/fmccown/classes/comp431-s15/notes/notes15.html">MongoDB</a>
</li>
<li><a href="https://www.harding.edu/fmccown/classes/comp431-s15/notes/notes16.html">Mongoose</a>
</li>
<li><a href="https://www.harding.edu/fmccown/classes/comp431-s15/notes/notes17.html">RESTful Web Services</a>
</li>
<li><a href="https://www.harding.edu/fmccown/classes/comp431-s15/notes/notes18.html">Creating RESTful Web Services with MEAN</a>
</li>
<li><a href="https://www.harding.edu/fmccown/classes/comp431-s15/notes/notes19.html">AngularJS</a>
</li>
<li><a href="https://www.harding.edu/fmccown/classes/comp431-s15/notes/notes20.html">Controllers and Services</a>
</li>
<li><a href="https://www.harding.edu/fmccown/classes/comp431-s15/notes/notes21.html">Routing</a>
</li>
<li><a href="https://www.harding.edu/fmccown/classes/comp431-s15/notes/notes22.html">Using RESTful Web APIs with AngularJS</a>
<li><a href="https://www.harding.edu/fmccown/classes/comp431-s15/notes/notes23.html">Token-Based Authentication</a>
</li>
</li>
</ol>
Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-40070399701450245122014-12-17T11:49:00.000-06:002014-12-19T08:31:47.641-06:00XNA and Kinect 2 hand motion demo<div dir="ltr" style="text-align: left;" trbidi="on">
<script type="text/javascript" src="http://www.harding.edu/fmccown/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="http://www.harding.edu/fmccown/syntaxhighlighter/scripts/shBrushCSharp.js"></script>
<link type="text/css" rel="stylesheet" href="http://www.harding.edu/fmccown/syntaxhighlighter/styles/shCore.css"/>
<link type="text/css" rel="stylesheet" href="http://www.harding.edu/fmccown/syntaxhighlighter/styles/shThemeDefault.css"/>
<script type="text/javascript">
SyntaxHighlighter.config.clipboardSwf = 'http://www.harding.edu/fmccown/syntaxhighlighter/scripts/clipboard.swf';
SyntaxHighlighter.all();
</script>
<p>This demo will show you how to write a simple XNA application that reads hand motion from the Kinect v2. The Kinect sensor can detect motion for your entire body, but here I'll focus on just detecting hand motion and whether the hand is open (all fingers out) or closed (in a fist) as shown in the screenshot below.
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyRi8NudQyjlnMPjJT4FMCi4Jxzs3ibEFDbYcJaAm6NF4v_XGE89rl3WOBKatIEroJJKphcag0kPnhy971Gtc_8rVMt0SKshDP437_gdPt5S32Y0ZM370ZJUbliALSLAY9c4n9/s1600/xna_hand_motion.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyRi8NudQyjlnMPjJT4FMCi4Jxzs3ibEFDbYcJaAm6NF4v_XGE89rl3WOBKatIEroJJKphcag0kPnhy971Gtc_8rVMt0SKshDP437_gdPt5S32Y0ZM370ZJUbliALSLAY9c4n9/s400/xna_hand_motion.png" /></a></div>
</p>
<br>
<h2>Prerequisites</h2>
<p>
You must have the Kinect for Windows 2 correctly installed along with the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=44561">SDK</a>. There are plenty of online tutorials showing you how to program with the older Kinect; this is for the latest version.
</p>
<p>
See the Prerequisites section from my <a href="/2014/11/kinect-for-windows-2-and-xna-demo.html">previous post</a> on installing the necessary software to code this demo using Visual Studio 2013.
</p>
<br>
<h2>Create an XNA Project</h2>
First create an XNA project by selecting <b>File</b> → <b>Project...</b> from the menu. Then select <b>XNA Game Studio 4.0</b> template under <b>Visual C#</b> and select <b>Windows Game (2.0)</b>. Name the project <b>KinectMotionDemo</b>.
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkRu94dMQ_62RZ98ekIkHRmlDD2WN4mr7OubULb96K8yaziSbDVHh58pcKiPmjcS1l4nlW8L81C1cYLiMtxpH8Jfo2q_oJTm9ijG6PKTHyU_TMGKxMfZIK9Sc-ZaYVf4daWciq/s1600/vs_xna_project.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkRu94dMQ_62RZ98ekIkHRmlDD2WN4mr7OubULb96K8yaziSbDVHh58pcKiPmjcS1l4nlW8L81C1cYLiMtxpH8Jfo2q_oJTm9ijG6PKTHyU_TMGKxMfZIK9Sc-ZaYVf4daWciq/s400/vs_xna_project.png" /></a></div>
<br>
<h2>Add Kinect Reference</h2>
<p>
Right-click the project in the Solution Explorer and from the context menu select <b>Add</b> → <b>Reference...</b>. Type <b>kinect</b> in the dialog box's search box, and check the <b>Microsoft.Kinect</b> reference. Then press OK. You should now see <b>Microsoft.Kinect</b> among the project's References in the Solution Explorer.
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggUcxkO1_xBEFjh3aEo3C0pDpp80PIZnYKZTVOMAU3bf4yAxG6Dvwv31kGAdsxhV0zlP9B6nGo0r8Hyi3fQ__OI5ZWxy2BzXGbwxSEAJj6qVYa6Gb9cNhszYVLgMkE6eMGHEvk/s1600/add_kinect_reference.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggUcxkO1_xBEFjh3aEo3C0pDpp80PIZnYKZTVOMAU3bf4yAxG6Dvwv31kGAdsxhV0zlP9B6nGo0r8Hyi3fQ__OI5ZWxy2BzXGbwxSEAJj6qVYa6Gb9cNhszYVLgMkE6eMGHEvk/s400/add_kinect_reference.png" /></a></div>
</p>
<br>
<h2>Initialization</h2>
<p>
Add the Kinect namespace to your <code>Game1.cs</code> file:
<pre class="brush: c-sharp; gutter: false;">
using Microsoft.Kinect;
</pre>
<br>
</p>
<p>
Inside the <code>KinectMotionDemo</code> namespace and immediately after the <code>Game1</code> class, create a class that represents a Hand. We will keep track of whether the hand is left or right, open or closed, and its location to be displayed on the screen.
<pre class="brush: c-sharp; gutter: false;">
class Hand
{
// HandLeft or HandRight
public JointType Type { get; set; }
// Open or closed
public HandState HandState { get; set; }
// Screen location of hand
public Vector2 ScreenPosition { get; set; }
}
</pre>
</p>
<p>
<br>
Add some class-level variables which will be needed elsewhere:
<pre class="brush: c-sharp; gutter: false;">
// Active Kinect sensor
private KinectSensor kinectSensor;
// Body frame reader
private BodyFrameReader bodyFrameReader;
// Array for the bodies and hands
private Body[] bodies;
private Hand[] leftHands;
private Hand[] rightHands;
// Sprites used to display hands
private Texture2D leftHandOpenSprite;
private Texture2D leftHandClosedSprite;
private Texture2D rightHandOpenSprite;
private Texture2D rightHandClosedSprite;
</pre>
Note that a <code>Microsoft.Kinect.Body</code> represents a person's body, and Kinect can track up to six people at the same time.
<br>
</p>
<p>
Add some code in the <code>Initialize</code> method to initialize the sensor, create arrays large enough to track up to six people, and add an event listener so we'll know when body sensor data is available.
<pre class="brush: c-sharp; gutter: false;">
protected override void Initialize()
{
// Allow mouse to be visible when on top of the window
IsMouseVisible = true;
// One sensor is currently supported
kinectSensor = KinectSensor.GetDefault();
// Determine how many bodies and hands can be tracked
int totalBodies = kinectSensor.BodyFrameSource.BodyCount;
bodies = new Body[totalBodies];
leftHands = new Hand[totalBodies];
rightHands = new Hand[totalBodies];
// Open the reader for the body frames
bodyFrameReader = kinectSensor.BodyFrameSource.OpenReader();
// Specify handler for frame arrival
bodyFrameReader.FrameArrived += this.Reader_BodyFrameArrived;
// Open the sensor
kinectSensor.Open();
base.Initialize();
}
</pre>
</p>
<p>
<br>
Override the <code>Game</code> class's <code>OnExiting</code> method to free up Kinect sensor when the game window is being closed.
<pre class="brush: c-sharp; gutter: false;">
protected override void OnExiting(object sender, EventArgs args)
{
if (bodyFrameReader != null)
{
bodyFrameReader.Dispose();
bodyFrameReader = null;
}
if (kinectSensor != null)
{
kinectSensor.Close();
kinectSensor = null;
}
base.OnExiting(sender, args);
}
</pre>
<br>
</p>
<h2>Where are the hands?</h2>
<p>
Now write the event listener for the body frame reader that will obtain the sensor data for the left and right hands of all the bodies that are being tracked. This method will call <code>UpdateHandInfo</code>, a method that will determine if the hand is open or closed and determine where it is located in depth space so it can be accurately mapped to an (x,y) location on the screen.
<pre class="brush: c-sharp; gutter: false;">
private void Reader_BodyFrameArrived(object sender,
BodyFrameArrivedEventArgs e)
{
bool dataReceived = false;
// Load captured body data into the array of bodies
using (BodyFrame bodyFrame = e.FrameReference.AcquireFrame())
{
if (bodyFrame != null)
{
bodyFrame.GetAndRefreshBodyData(bodies);
dataReceived = true;
}
}
if (dataReceived)
{
// Iterate through each body
for (int i = 0; i < bodies.Length; i++)
{
Body body = bodies[i];
if (body.IsTracked)
{
// See if hands need to be instantiated
if (leftHands[i] == null)
leftHands[i] = new Hand { Type = JointType.HandLeft };
if (rightHands[i] == null)
rightHands[i] = new Hand { Type = JointType.HandRight };
// Get hand sensor data
UpdateHandInfo(leftHands[i], body);
UpdateHandInfo(rightHands[i], body);
}
}
}
}
private void UpdateHandInfo(Hand hand, Body body)
{
if (hand.Type == JointType.HandLeft)
hand.HandState = body.HandLeftState;
else
hand.HandState = body.HandRightState;
// Map joint position to depth space
CameraSpacePoint position = body.Joints[hand.Type].Position;
DepthSpacePoint depthSpacePoint = kinectSensor.CoordinateMapper.MapCameraPointToDepthSpace(position);
hand.ScreenPosition = new Vector2(depthSpacePoint.X, depthSpacePoint.Y);
}
</pre>
<br>
</p>
<h2>Displaying the Hands</h2>
<p>
Find four different images that you would like to display for your left and right hands when they are open or closed. I used images that look a lot like hands, but you can be more creative. Make sure that you use only letters, numbers, and underscores in your filenames because these will be converted into variable names!
</p>
<p>
Add the images to the <b>KinectMotionDemoContent</b> project in the Solution Explorer by right-clicking on the KinectMotionDemoContent project and selecting <b>Add → Existing Item...</b>. An open dialog box will appear. Select the four PNG images you want to use and press OK. You should now see all four images in your KinectMotionDemoContent project as pictured below.
<div class="separator" style="clear: both; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmi4sdk7d3gNcr1f_-x7_hmUz4Px78QUmTkyHkgxnMvTbuSuhw6QlGfdUvXU-NWj1lPDUSk00W2MhVq7SYksYcFtW_GBY_GDt0Vi-a00WiUDmQ6UWiyHVJa25R8et2gwwE6pjP/s400/xna_solution_explorer.png" /></div>
<br>
Now load the PNG images in the <code>LoadContent</code> method.
<pre class="brush: c-sharp; gutter: false;">
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
leftHandOpenSprite =
Content.Load<Texture2D>("openhand_left");
leftHandClosedSprite =
Content.Load<Texture2D>("closedhand_left");
rightHandOpenSprite =
Content.Load<Texture2D>("openhand_right");
rightHandClosedSprite =
Content.Load<Texture2D>("closedhand_right");
}
</pre>
<br>
The hands will be displayed in the <code>Draw</code> method.
<pre class="brush: c-sharp; gutter: false;">
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
// Draw all left hands
foreach (Hand hand in leftHands)
{
if (hand != null)
{
if (hand.HandState == HandState.Closed)
spriteBatch.Draw(leftHandClosedSprite,
hand.ScreenPosition, Color.White);
else
spriteBatch.Draw(leftHandOpenSprite,
hand.ScreenPosition, Color.White);
}
}
// Draw all right hands
foreach (Hand hand in rightHands)
{
if (hand != null)
{
if (hand.HandState == HandState.Closed)
spriteBatch.Draw(rightHandClosedSprite,
hand.ScreenPosition, Color.White);
else
spriteBatch.Draw(rightHandOpenSprite,
hand.ScreenPosition, Color.White);
}
}
spriteBatch.End();
base.Draw(gameTime);
}
</pre>
</p>
<p>
<br>
Press Ctrl-F5 to build and run the program. Stand in front of your Kinect, and you should see the PNG images move as you move your hands. Try opening and closing your hands to see the open/close images being displayed. If you have a friend nearby, ask them to join you so you can see four hands moving about the screen.
</p>
<br>
<h2>Problems?</h2>
<p>
When I first tried to build and run my program, I got the following error message:
<blockquote style="font-size: smaller; font-family: Courier New">The primary reference "Microsoft.Kinect, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" could not be resolved because it was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=b4.0".</blockquote>
To fix this problem, I closed the project in Visual Studio and opened the project's .csproj file in a text editor and changed the following line:
<pre>
<TargetFrameworkVersion><b>v4.0</b></TargetFrameworkVersion>
</pre>
to
<pre>
<TargetFrameworkVersion><b>v4.5</b></TargetFrameworkVersion>
</pre>
Then I re-opened the project in Visual Studio and re-built the application with no problems.
</p>
</div>
Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-67311898865931222092014-12-11T08:50:00.000-06:002014-12-11T08:50:40.922-06:00Hour of Code at Kensett Elementary<div dir="ltr" style="text-align: left;" trbidi="on">
<p>
Eight students from our Computer Science department met with about 50 fifth graders at <a href="http://www.edlinesites.net/pages/Kensett_Elementary_School">Kensett Elementary</a> on Friday, Dec 5, to participate in the <a href="http://hourofcode.com/us">Hour of Code</a>. As you can see from the pictures, the kids were having a blast! Most of them ran through the <a href="http://code.org/learn">Angry Birds tutorial</a>, and a few tried the Frozen and Flappy Bird tutorials. When the hour was over, many of them got really excited when I told them they could keep working on the tutorials when they got home... just open a web browser and go to <a href="http://code.org/">code.org</a>!
</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgyj50C_4DjRoR7FYMmudPM_EU1RdgxBVclrOvYWDT9K6BdMl5kiAVXaBHztGu1UkiYkbk8wvqPiNFQAL8m8RzGsbKH5Su6OLWStP2WShlTGpa-6jOxBU3fB9gRB5BzTydlCEU/s1600/20141205_132308.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgyj50C_4DjRoR7FYMmudPM_EU1RdgxBVclrOvYWDT9K6BdMl5kiAVXaBHztGu1UkiYkbk8wvqPiNFQAL8m8RzGsbKH5Su6OLWStP2WShlTGpa-6jOxBU3fB9gRB5BzTydlCEU/s400/20141205_132308.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5v2maGlKdLD07tH-z9dP64dtxZMGLZFjBw1ng9TzMWUKkpAsqU524hhjom97E5LjSsTCa18nE6DlYdknyQtZmpNx7tPQo3CU6HhlavcZZX97C8AoXOi3QIaNXoa1tFM_L9R31/s1600/20141205_132255.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5v2maGlKdLD07tH-z9dP64dtxZMGLZFjBw1ng9TzMWUKkpAsqU524hhjom97E5LjSsTCa18nE6DlYdknyQtZmpNx7tPQo3CU6HhlavcZZX97C8AoXOi3QIaNXoa1tFM_L9R31/s400/20141205_132255.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeJqYAZbWd35FN77IBpN5haAS-8PwW4qTfnAb0YxUWe1OKr2oTlYZhTjJQFpvEQoSywt5a_2UiSErYcTrjcomoslloHK6aFmXw-AtMN8BWBQ4Fc464fIGOx1I97lMN0ICv2Kn6/s1600/035.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeJqYAZbWd35FN77IBpN5haAS-8PwW4qTfnAb0YxUWe1OKr2oTlYZhTjJQFpvEQoSywt5a_2UiSErYcTrjcomoslloHK6aFmXw-AtMN8BWBQ4Fc464fIGOx1I97lMN0ICv2Kn6/s400/035.JPG" /></a></div>
<br /></div>
Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-47166728338346967242014-11-26T12:35:00.000-06:002015-02-02T14:33:50.672-06:00Kinect for Windows 2 and XNA demo<div dir="ltr" style="text-align: left;" trbidi="on">
<script type="text/javascript" src="http://www.harding.edu/fmccown/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="http://www.harding.edu/fmccown/syntaxhighlighter/scripts/shBrushCSharp.js"></script>
<link type="text/css" rel="stylesheet" href="http://www.harding.edu/fmccown/syntaxhighlighter/styles/shCore.css"/>
<link type="text/css" rel="stylesheet" href="http://www.harding.edu/fmccown/syntaxhighlighter/styles/shThemeDefault.css"/>
<script type="text/javascript">
SyntaxHighlighter.config.clipboardSwf = 'http://www.harding.edu/fmccown/syntaxhighlighter/scripts/clipboard.swf';
SyntaxHighlighter.all();
</script>
<p>
Over the Thanksgiving break I managed to get my new <a href="http://www.microsoft.com/en-us/kinectforwindows/default.aspx">Kinect for Windows 2</a> working with XNA. I couldn't find any code samples online using XNA with the new Kinect SDK, so hopefully this will help out others who are trying to do something similar.
</p>
<p>
This demo will show how to display the Kinect's video feed which is provided by its 1080p color camera. This is similar to the <a href="http://msdn.microsoft.com/en-us/library/hh855379.aspx">Color Basics-WPF C# Sample</a> provided in the Kinect SDK 2 except that it is tailored for XNA.
<br>
<div class="separator" style="clear: both; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgflnq6I_J0FhO8Qn28XugXy1T0geBu_3e9Ewq2oZMy8AT2sWcIgUoWNQazGF5xQ7BmhI-TQpi2SEEHtf2ViSgL05ApdXwi5iwxKdW-16pMpKPWv3boSygP8-VPBPOmu3ZUCvzm/s400/xna_video2.jpg" /></div>
</p>
<br>
<h2>Prerequisites</h2>
<p>
You must have the Kinect for Windows 2 correctly installed along with the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=44561">SDK</a>. There are plenty of online tutorials showing you how to program with the older Kinect; this is for the latest version.
</p>
<p>
Microsoft is no longer maintaining XNA, but but you can still use it in Visual Studio 2013. There are two different ways to get XNA working with VS2013:
</p>
<p><b>Quick Way</b><br><br>
Install <a href="https://msxna.codeplex.com/releases/view/117230">XNA 4.0 Refresh for VS 2013</a>. The zip file contains four components that you will need to install in succession.
</p>
<p><b>Long Way</b><br><br>
If you have VS 2010 laying around, this method will also work although it takes much longer. I found this method necessary when installing XNA in a lab setting. Using the Quick Way would not work for users who were not administrators.
<ol>
<li>Install Visual Studio 2010. Any edition will work.
</li>
<li>Install <a href="http://www.xbox.com/en-US/LIVE/PC/DownloadClient">Games for Windows Marketplace Client</a>
</li>
<li>
Install <a href="http://www.microsoft.com/en-us/download/confirmation.aspx?id=23714">XNA Game Studio 4.0</a>
</li>
<li>
Install <a href="https://msxna.codeplex.com/releases/view/117230">XNA 4.0 Refresh for VS 2013</a>.
After you have downloaded the zip file, extract it and run <b>XNA Game Studio 4.0.vsix</b>
</li>
</ol>
</p>
<p>
If you want to skip both these options, you might try <a href="http://www.monogame.net/">MonoGame</a>.
Just be aware that it does not have a content pipeline converter (software that converts content like sound files into xnb files). I have not tried MonoGame with Kinect, but I don't see any reason why it wouldn't work.
</p>
<br>
<h2>Create an XNA Project</h2>
First create an XNA project by selecting <b>File</b> → <b>Project...</b> from the menu. Then select <b>XNA Game Studio 4.0</b> template under <b>Visual C#</b> and select <b>Windows Game (2.0)</b>. Name the project <b>KinectVideoXna</b>.
<br><br>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkRu94dMQ_62RZ98ekIkHRmlDD2WN4mr7OubULb96K8yaziSbDVHh58pcKiPmjcS1l4nlW8L81C1cYLiMtxpH8Jfo2q_oJTm9ijG6PKTHyU_TMGKxMfZIK9Sc-ZaYVf4daWciq/s1600/vs_xna_project.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkRu94dMQ_62RZ98ekIkHRmlDD2WN4mr7OubULb96K8yaziSbDVHh58pcKiPmjcS1l4nlW8L81C1cYLiMtxpH8Jfo2q_oJTm9ijG6PKTHyU_TMGKxMfZIK9Sc-ZaYVf4daWciq/s400/vs_xna_project.png" /></a></div>
<br>
<h2>Add Kinect Reference</h2>
<p>
Right-click the project in the Solution Explorer and from the context menu select <b>Add</b> → <b>Reference...</b>. Type <b>kinect</b> in the dialog box's search box, and check the <b>Microsoft.Kinect</b> reference. Then press OK. You should now see <b>Microsoft.Kinect</b> among the project's References in the Solution Explorer.
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggUcxkO1_xBEFjh3aEo3C0pDpp80PIZnYKZTVOMAU3bf4yAxG6Dvwv31kGAdsxhV0zlP9B6nGo0r8Hyi3fQ__OI5ZWxy2BzXGbwxSEAJj6qVYa6Gb9cNhszYVLgMkE6eMGHEvk/s1600/add_kinect_reference.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggUcxkO1_xBEFjh3aEo3C0pDpp80PIZnYKZTVOMAU3bf4yAxG6Dvwv31kGAdsxhV0zlP9B6nGo0r8Hyi3fQ__OI5ZWxy2BzXGbwxSEAJj6qVYa6Gb9cNhszYVLgMkE6eMGHEvk/s400/add_kinect_reference.png" /></a></div>
</p>
<br>
<h2>Adding Code</h2>
<p>
Add the Kinect namespace:
<pre class="brush: c-sharp; gutter: false;">
using Microsoft.Kinect;
</pre>
<br>
</p>
<p>
Add some class-level variables:
<pre class="brush: c-sharp; gutter: false;">
// Texture to draw
Texture2D videoTexture;
// Active Kinect sensor
private KinectSensor kinectSensor;
// Reader for color frames
private ColorFrameReader colorFrameReader;
// Intermediate storage for receiving frame data from the sensor
private byte[] colorPixels;
</pre>
<br>
</p>
<p>
Initialize the sensor and the data structures used for capturing data from the sensors:
<pre class="brush: c-sharp; gutter: false;">
protected override void Initialize()
{
kinectSensor = KinectSensor.GetDefault();
// Open the reader for the color frames
colorFrameReader =
kinectSensor.ColorFrameSource.OpenReader();
// Specify a handler for frame arrival
colorFrameReader.FrameArrived += Reader_ColorFrameArrived;
// Create the ColorFrameDescription using rgba format
FrameDescription desc = kinectSensor.ColorFrameSource.
CreateFrameDescription(ColorImageFormat.Rgba);
// Allocate space to put the pixels to be rendered
colorPixels = new byte[desc.Width * desc.Height *
desc.BytesPerPixel];
// Open the sensor
kinectSensor.Open();
// Create texture large enough to hold the color frame
videoTexture = new Texture2D(graphics.GraphicsDevice,
desc.Width, desc.Height);
base.Initialize();
}
</pre>
<br>
</p>
<p>
Also override the <code>OnExiting</code> method to free up the <code>ColorFrameReder</code> and Kinect sensor when the game exists:
<pre class="brush: c-sharp; gutter: false;">
protected override void OnExiting(object sender, EventArgs args)
{
if (colorFrameReader != null)
{
colorFrameReader.Dispose();
colorFrameReader = null;
}
if (kinectSensor != null)
{
kinectSensor.Close();
kinectSensor = null;
}
base.OnExiting(sender, args);
}
</pre>
<br>
</p>
<p>
Create the handler for the color photo sensor where we'll store the captured
photo into <b>videoTexture</b>:
<pre class="brush: c-sharp; gutter: false;">
private void Reader_ColorFrameArrived(object sender, ColorFrameArrivedEventArgs e)
{
// ColorFrame is IDisposable
using (ColorFrame colorFrame = e.FrameReference.AcquireFrame())
{
if (colorFrame != null)
{
// Copy color frame into the array
colorFrame.CopyConvertedFrameDataToArray(
colorPixels,
ColorImageFormat.Rgba);
// Avoid exception when SetData method is used
GraphicsDevice.Textures[0] = null;
// Put pixel data into a texture
videoTexture.SetData(colorPixels);
}
}
}
</pre>
<br>
</p>
<p>
Finally, draw the <b>videoTexture</b> containing the color photo to the screen:
<pre class="brush: c-sharp; gutter: false;">
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
if (videoTexture != null)
{
// Draw color video
spriteBatch.Begin();
spriteBatch.Draw(videoTexture, new Rectangle(0, 0,
graphics.GraphicsDevice.Viewport.Width,
graphics.GraphicsDevice.Viewport.Height),
Color.White);
spriteBatch.End();
}
base.Draw(gameTime);
}
</pre>
<br>
</p>
<p>
Press Ctrl-F5 to build and run the program. You should see color video of whatever your Kinect is pointed at.
</p>
<br>
<h2>Problems?</h2>
<p>
When I first tried to build and run my program, I got the following error message:
<blockquote style="font-size: smaller; font-family: Courier New">The primary reference "Microsoft.Kinect, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" could not be resolved because it was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=b4.0".</blockquote>
To fix this problem, I closed the project in Visual Studio and opened the project's .csproj file in a text editor and changed the following line:
<pre>
<TargetFrameworkVersion><b>v4.0</b></TargetFrameworkVersion>
</pre>
to
<pre>
<TargetFrameworkVersion><b>v4.5</b></TargetFrameworkVersion>
</pre>
Then I re-opened the project in Visual Studio and re-built the application with no problems.
</p>
</div>Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-3338209955750384662014-10-10T13:44:00.000-05:002019-03-29T16:09:04.151-05:00Teaching an upper-level Web Development course<div dir="ltr" style="text-align: left;" trbidi="on">
<p>
We're half way through the fall semester, and the spring semester will be here before we know it. Every spring I teach an upper-level Web Development 2 elective which builds on the Web Dev 1 course that I teach every semester. The <a href="http://www.harding.edu/fmccown/classes/comp250-f14/">Web Dev 1 course</a> covers the fundamentals: HTTP, HTML, CSS, JavaScript, Ajax, and PHP.
</p>
<p>
The goal of Web Dev 2 is to give students more breadth and depth in web development, focusing on both client and server-side technologies. I try to choose technologies that are widely used so my students will be more marketable after graduation, and in the past I've taught a variety of technologies: advanced JavaScript, jQuery, Java servlets and JSPs, ASP.NET Web Forms, ASP.NET MVC, and creating web services with ASP.NET and JAX-RS. Of course you can't cover everything in 16 weeks, so I have to put a lot of thought into what can be adequately covered in a limited amount of time.
</p>
<p>
This summer I did some development work at <a href="http://www.flatironssolutions.com/">Flatirons Solutions</a> using AngularJS and web services with Spring. It got me wondering if my Web Dev 2 course should focus more on JavaScript frameworks. One of my developer friends this summer tried to convince me that JavaScript was also taking over the server and that I should be teaching Node.js instead of Java.
</p>
<p>It can be a struggle for computing professors to ensure our courses remain relevant when technologies are always changing. Fortunately I've got a lot of Facebook friends who are developers and Harding CS alumni, so I decided to ask their opinion:<br>
<blockquote><strong>If you were in college and could take an advanced Web Development course, what topics would you like it to cover?</strong></blockquote>
This elicited quite a few responses which I'll summarize here:
</p>
<p>
<ol>
<li>JavaScript frameworks like AngularJS, Ember, Knockout
</li>
<li>ASP.NET MVC and Web API
</li>
<li>Node.js
</li>
<li>Python and Django
</li>
<li>Ruby on Rails
</li>
<li>LESS
</li>
<li>Web services
</li>
<li>Web security
</li>
<li>Single Page Applications (SPAs)
</li>
<li>Automated web testing, A/B testing, UI testing
</li>
<li>Understanding HTTP
</li>
<li>Picking the right data store (relational, NoSQL, Map/Reduce, etc.)
</li>
<li>Caching and latency issues
</li>
<li>Teams that implement the same project on different platforms
</li>
<li>Git
</li>
<li>Web architecture - focusing less on development and more on architecture
</li>
</ol>
</p>
<p>
There may have been a few things I left off, but these received the most mentions. (Thank you for your input, guys!)
I'm still making up my mind, but this is what I'm leaning toward teaching this spring:
<ol>
<li><b>JavaScript</b> - The more JavaScript you are exposed to, the better. I'd like my students to be familiar with a number of <a href="http://www.w2lessons.com/2011/04/you-dont-know-javascript.html">advanced JavaScript features</a> and some popular libraries like <b>Underscore.js</b>.
</li>
<li><b>jQuery</b>- Everyone needs to know the <a href="http://blog.teamtreehouse.com/jquery-popular-javascript-library">most popular JavaScript library</a> in use.
</li>
<li><b>Node.js</b> and <b>Express</b> - Although I have little experience with Node, I think it would be helpful for my students to apply their JavaScript skills on the server as well as the client. I will probably tie in <b>MongoDB</b> which will give them experience with a NoSQL database. We will likely create a web service and consume it with an app written with...
</li>
<li><b>AngularJS</b> - Very popular JavaScript framework with <a href="http://www.revillweb.com/looking-for-angularjs-jobs/">strong job demand</a>. Plus I got some experience with it this summer. We will write unit tests using <b>Jasmine</b> and use <b>Karma</b> for integration testing.
</li>
</ol>
</p>
<p>
My students will work in pairs on their projects and use GitHub to house their code like they do in my GUI course. We'll use the WebStorm IDE which I came to love this summer. I'll inject other topics like security where they are applicable.
</p>
<p>
A weakness of this plan is that my students will not get to use Java or ASP.NET which are very popular server-side technologies. However, they will leave this class fluent in JavaScript.
</p>
</div>
Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-65757467040114066912014-08-01T09:32:00.006-05:002014-08-01T09:32:51.998-05:00Last day at Flatirons<div dir="ltr" style="text-align: left;" trbidi="on">
<p>Today is my last day at Flatirons Solutions. I've really enjoyed these eleven weeks and learned a ton. My web development courses, in particular, will definitely benefit from the exposure I received to some new technologies that I'll be integrating into those courses. I'm very thankful to George and Paula for giving me the opportunity to spend my summer here, and I hope that I made some major contributions.
</p>
</div>
Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-41318402188488525242014-06-24T21:56:00.001-05:002014-06-24T22:33:28.682-05:00Half way through our Colorado summer<div dir="ltr" style="text-align: left;" trbidi="on">
<p>
We're now entering our sixth week living in Boulder. My family is getting more accustomed to apartment living. It's ironic though how we thought we were escaping the Arkansas heat only to live in an apartment lacking air conditioning! At least the temperature drops each night.
</p>
<p>We had a little scare a few weeks ago. Becky had developed a large lump on her thyroid, and after meeting with a surgeon, she was strongly encouraged to have it removed in case it was cancerous. My sister (who is now eligible for sainthood) flew out here from Chicago so she could watch the kids while Becky recovered from surgery. The surgery went well, and praise God the lump was not cancerous! Becky is still healing from the surgery, but she is doing really well. The kids were pretty oblivious to the whole thing since Aunt Sass kept them busy with swimming and museums and making pizza. Have I mentioned how awesome my sister is?
</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9TkfVdcb57PWzM4Lo_m2xpTgO9v38nK7zniXAGAqw0Fv2fjKxLllw_CjwvzEzGYYZNhfFUO2H-NYI0HyrmnqqbDFJsKrAxPX7XX1xMWwBIdpadFp8I9XUquWqbhYwvXVMvb-s/s1600/Kids+and+Sara.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9TkfVdcb57PWzM4Lo_m2xpTgO9v38nK7zniXAGAqw0Fv2fjKxLllw_CjwvzEzGYYZNhfFUO2H-NYI0HyrmnqqbDFJsKrAxPX7XX1xMWwBIdpadFp8I9XUquWqbhYwvXVMvb-s/s400/Kids+and+Sara.jpg" /></a></div>
<p>
Since the surgery, Becky and the kids have been occupying themselves with all kinds of activities like tennis lessons, swimming lessons, and now karate classes while I toil away at Flatirons each day. <img style="padding: 0px;" src="http://photos1.blogger.com/blogger2/6653/2484/400/icon_wink.gif" alt="wink" border="0"> When I arrive home in the evenings we often eat and go out to a park or discover some new part of Boulder. On the weekends we have visited Red Rocks, Estes Park, and a few other places. In the photo below we hiked around Bear Lake at the Rocky Mountain National Park. As you can tell from our Chacos, we were not expecting to see snow!
</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXG5mSfvFZywqqCm-j7sgle-vh_kjKY4i5i-VjtQTTQjyMlVekzTP5awQYXeOof6iUEipq1g4ES7BMqu2K5XKbijo95hdCl4IkAsrrLu9Dt50VlvyZUU1NPn4ssWPryWXC3hm_/s1600/Bear+Lake.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXG5mSfvFZywqqCm-j7sgle-vh_kjKY4i5i-VjtQTTQjyMlVekzTP5awQYXeOof6iUEipq1g4ES7BMqu2K5XKbijo95hdCl4IkAsrrLu9Dt50VlvyZUU1NPn4ssWPryWXC3hm_/s400/Bear+Lake.JPG" /></a></div>
</p>
<p>We've gotten to see a number of old Colorado friends which has made our time out here very meaningful. Some of our best friends from Searcy also stopped by to visit for a couple of days, and we were able to dine at Casa Bonita and see a Rockies game with them. </p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCkuIWdrvKQy7Msk5SuMPPgzymn3xTJXRKdbnlrr0jT25fEuAq2EF4jHRJC_XzUe5GB8MBWGo3K2_sBDTv47MLBIzAhqS0BQWvD6ZO-8GW4A_5NQmJRon4DMnUD1fqxwGB2vEH/s1600/Rockies+game.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCkuIWdrvKQy7Msk5SuMPPgzymn3xTJXRKdbnlrr0jT25fEuAq2EF4jHRJC_XzUe5GB8MBWGo3K2_sBDTv47MLBIzAhqS0BQWvD6ZO-8GW4A_5NQmJRon4DMnUD1fqxwGB2vEH/s400/Rockies+game.jpg" /></a></div>
<p>
Next week my brother and his wife will be visiting from Texas, and some more good friends from Searcy will be coming up July 4th weekend. Becky has some college friends coming up to visit the last week of July. Lots to look forward to!
</p>
<p>
I'll conclude with a note of thankfulness for the <a href="http://www.bouldervalley.org/">Boulder Valley Church of Christ</a>. They have really taken us in, and we are so thankful for the many ways they supported us during Becky's surgery. One of the ladies watched the kids for us before Aunt Sara arrived, and one of the elders came to the hospital to pray with us immediately before the surgery. These are people who truly love the Lord.
</p>
<p>
I'm also thankful for the incredible VBS they put on. You would not believe how much effort they expended to entertain and teach about 50 children about God's love for a full week. Ethan and Braden absolutely loved going to VBS each day. I think it's really great that the body of Christ can be found nearly everywhere you go.
</p>
</div>
Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-63303174016109191952014-06-01T22:08:00.000-05:002014-06-01T22:09:18.237-05:00Week 2: Finally making some contributions<div dir="ltr" style="text-align: left;" trbidi="on">
<p>
<a href="http://frankmccown.blogspot.com/2014/05/a-tale-of-two-cities-searcy-and-boulder.html">Last week</a> at Flatirons was admittedly difficult. I really like to learn new stuff, but if I'm not contributing much and all I'm doing is trying to take in lots of information, time can pass by <i>very</i> slowly.
</p>
<p>This week I finally was able to write some code and fix some lingering bugs in our web application. We are using AngularJS which is new to me, and our code base is quite large, so I was a little on the slow side. By the end of the week I felt like I finally had a good idea how the application was designed and where to go to modify the app's functionality. My speed should start improving.
</p>
<p>
It really felt good to write code again. I really enjoy teaching, but I seldom have time to contribute to software that others are using. It's amazing to me how quickly time goes when I am programming and getting things to work right. Each bug fix makes me say "YES!" inside (and sometimes outside!).
</p>
</div>
Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-11273529327819907352014-05-24T17:23:00.002-05:002014-06-24T21:28:12.525-05:00A Tale of Two Cities: Searcy and Boulder<div dir="ltr" style="text-align: left;" trbidi="on">
<p>
I've just finished the first week of my summer position as a software developer at <a href="http://www.flatironssolutions.com/">Flatirons Solutions</a> in Boulder, Colorado. My family and I drove up from Arkansas on Sunday, and I started Monday morning. Everyone at Flatirons has been very friendly and helpful, but it's been a sharp learning curve getting up-to-speed. I spent the entire week getting familiar with the system I'll be working on, reading system documentation, learning about 10 new technologies or tools, and figuring out how things are done at Flatirons. I have yet to contribute anything, but hopefully next week that will change.
</p>
<p>
Our living situation has also been a bit of an adjustment. Moving from a house to a small two bedroom apartment has had its challenges. We got spoiled living in Arkansas in our own home where our kids could be loud and play in our back yard. Now we have to be quiet or anger the neighbors below, and there's no yard to speak of. We also have a very busy street just 30 feet away from our front door, so we've had to get used to much more noise and foot traffic.
</p>
<p>
What has been most notable is the change in culture from Searcy to Boulder. Both cities have that college town feel, but that is about where the similarities end. Searcy is small (population 20K), conservative, largely Christian, and enjoys a low cost of living. Boulder is large (100K), very liberal (some call it "the San Francisco of Colorado"), religiously diverse, and ridiculously expensive (<a href="http://www.areavibes.com/cost-of-living-calculator/searcy,+ar-vs-boulder,+co/">49% higher than Searcy</a>). Searcy is hot and humid, Boulder is a mile above the ocean and very dry.
</p>
<p>Boulderites are a very healthy bunch whereas Searcians like their fried Southern cuisine (Colorado has the lowest state obesity rate, and Arkansas has the 7th highest). In Searcy you are lucky to see one person a day riding their bike; you will easily run over a biker in Boulder if you blink. I've never seen so many people walking, running, or biking.
</p>
<p>Boulder is also well-known for their environmentalism. You will get a "look" at the grocery store if you show up without your own bags, and many vehicles are gas-sippers. The Searcy grocer will double-bag practically everything, and SUVs and enormous trucks dominate the roads in Searcy.
</p>
<p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji4y7qwFvqZP8xb3DmQGbhwIcEjMSmqZ4vctrUqDFf9NHFpj84_UWve7pJyIEr0j0hqBHMv0ytAbcR_eSLr_HA20mGXjtGjdzQTYQpMWg2ZzM1WCWy-cFO8SGTdwlStgOMTOlc/s1600/IMG_8406.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji4y7qwFvqZP8xb3DmQGbhwIcEjMSmqZ4vctrUqDFf9NHFpj84_UWve7pJyIEr0j0hqBHMv0ytAbcR_eSLr_HA20mGXjtGjdzQTYQpMWg2ZzM1WCWy-cFO8SGTdwlStgOMTOlc/s320/IMG_8406.JPG" /></a></div>
</p>
<p>What I really enjoy about Boulder is the beauty. It lies just east of the <a href="http://en.wikipedia.org/wiki/Flatirons">Flatirons</a>, a beautiful range of mountains that can be seen from our apartment. We went hiking this morning beginning at Chautauqua Park and soaked-up the beauty that God has created. Searcy has its beautiful places as well, but it's not quite in the same league.
</p>
<p>One week down, nine more to go!
</p>
</div>
Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0tag:blogger.com,1999:blog-20355581.post-50272997777159996622014-05-14T08:25:00.002-05:002014-05-14T08:25:59.440-05:00Off to Boulder<div dir="ltr" style="text-align: left;" trbidi="on">
<p>
This summer I'll be working at <a href="http://www.flatironssolutions.com/">Flatirons Solutions</a> in Boulder, Colorado. I'm very excited by this opportunity to take a break from doing research and spend some time developing software and learning new tools and techniques that I can incorporate back into the classroom. I grew up in Denver, so I'll have the opportunity to see lots of old friends; my kids will get to see where their dad grew up.
</p>
<p>
I hope to blog some about my experiences in Boulder, so stay tuned.
</p>
</div>
Frank McCownhttp://www.blogger.com/profile/12155866661529445991noreply@blogger.com0