Thrive in Hard Classes

Sometimes a class will seem tough, especially at first, especially when there has been a summer to forget everything you have learned. Do not give up too easily, because this is when each of us learn the most. Strive to remember and strive to learn what is not remembered. It will be remember if we try. Remembering then learning something new each day is the best use of our time.

We all need to stretch and do something we have never done before. That is the beauty of taking difficult classes. I am working to remember to jot down something I have learned each day. Our age makes no difference, we can each learn something new. I know that what may seem like the most difficult tasks, those objective that seem like they are almost impossible to achieve, are the tasks in our lives that are the most rewarding. Have you ever accomplished something that you were thrilled that you were able to do. There are many times in my life, in both career and family, that have been difficult challenges but the rewards are well worth the effort. Giving up is not really a good first option. There are often many different ways to solve a difficult problem. We each need to look for the way that serves us best.

At times we all fail, that is normal. It is what we do with those failures. One saying I have developed over the years is that there are usually two types of events that we remember the most, great successes and learning opportunities. Notice that failure is not included here. Sometimes we fall, but as Denzel Washington says, when we fall we need to fall forward so that we can see what is in front of us:

Fall forward, try something new each day. Love life and live it fully. Learn to help others and help them succeed. You will receive more successes in your life than you can ever imagine. We each need to be our best and that will make the world around us a much better place.

Posted in Attitude, Becoming, Challenges, Do, Fulfilling Life, Inspiration, remember, Self-Worth, Serving, Uncategorized | Tagged , , , , | Leave a comment

Growth Comes from Solving Harder Problems

At both Tektronix and Hewlett-Packard, I would sometimes see a quote from R. Buckminster Fuller. It probably is not his most famous quote, but it is one that engineers often quoted when given a really difficult assignment. This was especially true when the assignment came with a tight schedule. I found out that the attitude I took into the assignment made all the difference. If I embraced the new challenge, I usually succeeded.

And this can be good

Think about how boring it would be if you were given the same assignment to do over and over. You could get really good at it, or you could start getting sloppy and not do as well at the task as you did the first time. I teach Community College level Computer Science classes. The first assignment given is always “Hello World” no matter what the language is. This teaches the students the basics in how to use a development environment for the language and create a very simple program that prints out the phrase “Hello World!” Students are usually excited when they complete this first assignment. Now imagine being given that same assignment week after week. There is no challenge and the class will no longer be useful. This is why people who do well with one assignment are given harder assignments. It is a benefit both to the person and to the organization.

Imagine a world where you have to do the same series of tasks repetitively. Would that interest you? Do people on assembly lines who do their very best but also look for ways to be more efficient enjoy their work (and do better at the job) than people who just go through the repetitive motions? The key is to do a good job and look for ways that you can contribute to your organization even more. This may lead to harder assignments, but for me that is more interesting than just doing the same thing repetitively.

Be your best, do your best, and grow with new and exciting challenges.

Posted in Attitude, Challenges, Computers, Do, Uncategorized | Leave a comment

Push Through Until Task Completion

How many times do we start a project and then leave it incomplete and move on to other tasks? This is something that is the bane of most people, including me. This is one reason agile processes, including the Scrum Methodology were created. Breaking up any task into “bite size” (or for computer aficionados, “byte size”) subtasks is key to success. One philosophy that describes this is attempting to eat an elephant. The elephant is too big to eat all at once, as if anyone would ever really want to eat an elephant. The main point is to break up any task into manageable enough chucks to get each chunk completed in a reasonable length of time. An interesting article was written by Cory Miller from a student’s point of view, entitled “How to Eat an Elephant (Or Tackle Most Any Big, Huge, Enormous Project).” Since there will be many assignments in my classes, it is best to keep up with the calendar and complete each assignment by the due date. Some assignments will be divided into smaller assignments by me. Later assignments become more difficult and need to be divided up by you. I will give some grace period for each assignment, but I will put down an “M” for missing as an incentive to get the assignment submitted. Completing an assignment on time is best, Turning it in late has some penalties, but is far better that leaving it as missing.

For the CIS118 class, the lessons are divided up enough that just completing the assigned lessons by the due date is sufficient. If you struggle with any assignment, please reach out to me. I have done most of the lessons and will do any lesson that causes students problems. Communication is a key to success in this class.

For my programming classes, I supply a short Sample Scrum Form with the list of tasks that need to be performed and the priority of each task. Mark off the tasks as they are completed. If you have problems with any aspect of an assignment, please contact me through Teams. I will ask guided questions to see if I can help you develop your own answer, which is very important in the education process. The most learning (and joy) comes from realizing that you can succeed with knowledge you are learning in class and adding in your own insights and ideas. Listen with your “inner ear” to fully understand something. Often insights come by inspiration, hearing what has not been said.

Have you ever thought about everything that has been invented in your lifetime. For me, I remember when the IBM Personal Computer was introduced. When I bought my first, it was quite expensive and came with no hard drive. Think about how new products are created. The inventor(s) had the same information as any other person but was able to put the appropriate knowledge together, through inspiration, to develop something no one had conceptualized before. Learning is a lot like this. In class you will be given basic information about how to accomplish specific tasks. It is how you use that knowledge and how you combine it with knowledge you have gained outside of this class that helps you create the best possible product. To learn the most, challenge yourself. Don’t go with just the basic design for any assignment. Make it something unique to you. Challenge yourself to be and do your best. Doing the hard work now will prepare you for a good career in the field of your choice.

All tasks have a beginning and an end, including any class you are taking. Make the most of it. Learn skills that can be transferred to solving other life experiences. The more you take on tasks that may seem impossible now and break those up into smaller and doable tasks, the more you will be prepared for tougher challenges in the future. We can all gain the intellectual knowledge, it is when we include inspiration that we succeed. Find a quiet place to work, divide up your work into doable tasks, listen carefully and you will find the ability to complete any assignment in this class (or in life). Take the time to read inspirational books and talks. Believe it or not, that will help you solve any problem in this class. Integrate all of your knowledge and experiences together. Everything you have done can be a guide to everything you are trying to do. Plan well, work hard, and look for the needed inspiration.

Posted in C++, C++, Computers, Do, Inspiration, Java, Planning, Programming, SCRUM Methodology, Uncategorized | Leave a comment

Careers in Computer Science

Careers in Computer Science are quite rewarding and can be quite lucrative. Please explore your options and obtain a good foundation. A past article I wrote on Choosing a Career might be of interest to you. Find a career where you are enthused to come to work each day. Time passes quickly, so explore careers and try out different opportunities. Apply for internships, there are several opportunities through the high school. If you find one you might enjoy, then start searching out good colleges that have the reputation to help further your career. One such opportunity was posted on the Front Range Community College Website. There are other opportunities available. Search for them. This article was posted for students earning a Bachelors degree and wanting further education. It is just one example of what is available locally.

Bridge Program – Colorado School of Mines

 Posted Mar 30, 2021 8:27 AM

It’s never been a better time to take your bachelor’s degree and pursue a graduate degree at Colorado School of Mines in computer science! CS@Mines M.S. graduates have outstanding career opportunities, with an average starting salary of $98,730.

 CS@Mines has launched a new Bridge program designed for students without a CS undergraduate degree to prepare for and complete a CS M.S. in just four semesters of full-time enrollment. Limited scholarships are also available. Women and students from underrepresented groups are especially encouraged to apply.

 Attend our upcoming virtual information session to learn more about CS@Mines Bridge, or visit our website for more details: https://cs.mines.edu/csbridge/

 Tuesday, April 6, 4-5PM Mountain Time

Register Here

Zoom access details will be emailed to registrants prior to the event.

Tracy Camp, Ph.D.
ACM Fellow; IEEE Fellow 
Department Head and Professor of Computer Science 
Colorado School of Mines
303/384-2184
email: tcamp@mines.edu
Homepage: http://www.mines.edu/~tcamp/
CS Department: http://cs.mines.edu

Posted in Uncategorized | Leave a comment

Keep It Stupid Simple

I teach Computer Science at the college level for high school students. Teaching can be a challenge, but it is very rewarding. What got me to thinking about “Keeping It Simple” was helping students with C++ and Java homework. I recently assigned a challenging problem in each class. Both languages use dividing code into subsections called classes to allow related code to be put together into single modules. Those modules are then put together to create a program that a user can run. What I have found in each class is that too often students try to over-think the problem. They sometimes produce a good but very complex solution. Complex solutions are hard to maintain both for the original programmer and anyone else who takes over the code. The most elegant code is the opposite, it is as simple and as straight forward as possible. One common phrase used where I have worked is “Keep it Simple, Stupid!” I prefer to rearrange that to “Keep it Stupid Simple!” In companies, it is important to ship a good, usable product as quickly as possible. Look at what the product (or for students, assignment) is supposed to do and then do that well. “Bells and Whistles” can be added later, but do the best simple design first. Customers really appreciate products that can solve their needs and have that quickly. Keeping it simple does not mean compromising your standards and rushing the product, but making the best product possible.

An example that shows both the advantages of keeping it simple and rushing the product to market is illustrated by the competition between McDonald-Douglas, with its DC-10 and Lockheed with its L-1011. In the 1970s, they competed in the market for planes larger than Boeing 707s and DC-8s and smaller than Boeing 747s. MD focused on keeping the design simple and safe enough. Lockheed was producing military aircraft and so was more concerned with making the best possible design as safe as possible. MD was able to come out with their plane first and even airlines, like Delta who wanted to buy L-1011s, bought DC-10s as a stopgap. Overall, they both had good safety records and the first one to market received the lions share of orders.

The C++ students have already taken one semester of programming the language and so have the basics mastered. The purpose of their exercise was to work in a group using GitHub as the repository for their code. They were assigned to work in groups of two to three and divide up the code accordingly. The actual assignment was to build a generic Account class with most of the storage of information and routines to do the main functions of an account. They then were assigned to create a checking account, savings account, CD account, and mortgage account. In Java and C++, an Account class can have what are called subclasses which can use the variables and functions from the Account class and only add or modify what is needed to make the Account class perform the functionality for each of these specific account types. Keeping it simple means knowing who is doing what and tracking each person’s progress as well as writing simple code that does the job well. Some examples of added complexity to a problem are:

  1. Not following through on what was promised and causing one person to do the majority of the work.
  2. Reprogramming the code from the Account class in each of the subclasses.
  3. Using complex algorithms when more direct methods could be used.

In the Java class are all students with very little to no programming experience. The students have been doing well with the assignments so far, so I decided to give them a more challenging assignment. They were to create a Mancala board. I presented an example of the code to the class and some followed it exactly. But there were some interesting variants. One was quite good where the user decided on a different format for presenting the board and that solution presented the information for the board well. There were others, though, that tried to make the problem more complex than it really is. I showed the students several one-dimensional arrays to solve the problem. Since the students are new, a few struggle to implement a solution and made the code more complex than was needed. One created a giant two-dimensional array to try to handle everything. After working with this person, s/he was able to reduce about 15-lines of code down to about three lines, which was much easier to understand and did the needed job.

Remember to “Keep it Stupid Simple” when doing something important. This is actually an old philosophy for many things beside programming. It was first attributed to a Franciscan monk, William of Ockham. Occam Razor states that the simplest explanation is usually the correct answer. “Keep it Stupid Simple” and you will do well.

Posted in C++, C++, Computers, GitHub, Java, Occam Razor, Programming, Simple | Leave a comment

Students, Strive to Be an Individual

I am into my fifth decade of teaching in various forms. The one constant in all of that time is that each student is an individual with unique needs and learning styles. It is impossible to meet all the needs of all the students all of the time, but it is possible to make slight adjustments to teaching style to accommodate the needs of each student. Each student has their own special needs and talents. Those who may seem slow in one area will have other areas in which they excel. The key to teaching, for me, is to find out what it takes to have each student get to that “aha” moment where specific concepts make sense. If I can do that with individual students, I feel I have achieved one of my main goals in each of my classes. Finding each student’s motivation is sometimes difficult. Helping a person to succeed starts with helping a person to want to succeed.

I have recently rediscovered Ralph Waldo Emerson quotes when I was thinking about writing this article. I am using two of them in this article as they match my thoughts.

Be Yourself and Achieve What is Important in Your Life!

There is an old saying. “Be yourself, everyone else is taken.” We each are born with talents, that may take some effort to discover, but they are there. Some talents are easier to spot than others. I am sure we each know some great athletes or musicians who shine early in life. However, unless those talents are developed, others can become better through hard work and lots of practice. In baseball and basketball, it is often said that the best coaches are the ones who worked hard honing their skills, without all of the natural gifts of others. They know what it takes to be great, where a person who has many natural gifts that hey do use may not know how to explain how to become excellent. We each need to decide what we love and see what it would take to achieve our goals. We may not succeed in reaching the level of success we would like, but we know we tried and are grateful for the opportunities. The effort may lead to finding something that we like even more. We must not compare ourselves to other people, but must put our effort into improving ourselves. John Wooden went with the philosophy that we must “Make Each Day Our Masterpiece.” He probably is the coach with the best winning percentage of any basketball coach. He taught his players to each strive to do their best. He did not design any offence or defense around an opponent, instead he got each person to go out and do his (her) best. If we each do this, we may surprise ourselves on the success we could have.

After improving ourselves, we need to go out and make the most difference we can. Rejoice in doing “good.” The RWE quote I choice for this is:

Happiness is often achieved through personal effort. It is not something we can expect someone else to give to us. It is important to surround ourselves with good people, but true happiness comes from our own efforts to do well in all that we do. Sometimes doing what is right is not always popular, but it is what brings internal happiness. Go out and make a difference.

Each person is an individual with individual talents and needs. We each need to develop our talents wisely and find ways to share those talents with others. As we serve each other, we will be presented with opportunities for great success and happiness. We must never sell ourselves short or compromise our standards. Sometimes growth is hard, but it is well worth it. Live well and prosper!

Posted in Attitude, Becoming, Do, Goals, Self-Worth, Uncategorized | 1 Comment

STEM/Computer Science Board Meeting 16 December 2020

This information is probably not as thorough as I would like. It is based off of notes I wrote on the back of a business card since I did not have any other writing material available. So, I hope I captured the major points. The purpose of the meeting was to hear from members of our community who work with technology and want the best education for our high school and middle school students.

Steve gave an overview of his Computer Fundamentals class, which he is developing and taught for the first time this semester. The course is designed to cover what computers are, what they do, how they are physically built and maintained, and what goes into making them useful. The last part includes descriptions of peripherals, operating systems, systems software, application software, and computer language. A short introduction to Python occurs during the last two weeks of the course. Many of his students would like a little longer section on computer programming. Steve then explained the two follow-on course sequences that the students could take. His sections include how to build and maintain computers, networks of computers, and security issues. My follow-up courses include an introduction to Microsoft Office and two two-semester sequences on computer programming. The two sequences are for Java and C++. The reaction of the board on the last two was interesting. They think that Python and Java are taught as introductory languages more, but C++ is more tightly coupled to the hardware and produces much faster executables. As a side note, CSU expects students to know Java, while CU and the School of Mines expect students to know C++. If we teach both, it gives students a chose that could be helpful depending on which school they would like to attend.

One phrase that was given that intrigues me is that “All Data Has Bias!” From what I could gather by some follow-up questions and remarks is that data is usually presented in some organized form. The organizer has internal biases and even though most try to be fair those biases do come through in the presentation of the data. The alternative is to do what data analytics had to do in the past and go through all the data (like the programmers of the Saturn V rocket computers analyzing the output of a data dump from a Saturn V flight. Eve a straight data dump has the prejudice of the person who gathered the data.

Some of the areas that they would like to make sure we cover in technical classes are:

  1. Independent Research
  2. Machine Learning
  3. Ethics and Artificial Intelligence
  4. Introduction to Data Science
  5. Weapons of Math Destruction
  6. GitHub
  7. Project Organization (like Scrum/Agile)
  8. Functional Programming as well as Object Oriented Programming (OOP)
  9. Desire to Learn and Innovate
  10. Tools like Slack, IDEs, – I would like to talk with them more on this subject.

One last thing I heard was someone mention the importance of students having a mentor to help guide them and answer questions in such a way that helps them to develop solutions on their own.

Additional Information

Here are some comments made on the meeting that might be helpful.

Diego Krapf

I received some very useful links from an undergraduate student that is working on a machine learning project. She said these were some of the best resources she used to learn about machine learning concepts. I was browsing through them and found that some are really useful and very enjoyable to watch.

  1. https://ai.google/education/ – Google Tutorials and guides
  2. https://www.coursera.org/learn/machine-learning – Stanford Machine Learning Course
  3. https://www.udacity.com/course/intro-to-machine-learning–ud120 – Udacity Machine Learning Course
  4. https://machinelearningmastery.com – Website with tutorials on machine learning projects
  5. https://youtu.be/GvYYFloV0aA – AI Crash Course
  6. “Hands-on Machine Learning with Scikit-Learn, Keras, & TensorFlow” by Aurélien Géron

Stephen Hurst

Computer Science Foundations and Office 365/2019 are probably the best way to introduce students to the field and it is why I’m leery about them, as they will soon begin to attract a lot of students, overwhelming us! I’m at 3 sections next semester and won’t be able to do that in the Fall.

I’m also concerned about our only being able to offer every-other-day certification classes. The students would learn so much more and be even more ready for the tests I could teach them every day and provide much more consistency. Note: I am also concerned about classes that are less than five days per week (or at least four) in programming. There is too much that students forget from class to class if we do not meet on a daily basis.

Data science intrigues me, and I will spend more time on it this upcoming semester as well as machine learning and a more formal approach to programming in Python. Website creation will decrease, as the students are able to achieve good website results with the free software already available to them. Unfortunately, if they want more in-depth WWW development, they’ll need to get it at college. I don’t think we have the staff or resources to add a 3rd Computer Science track.

It is important that students maintain interest in the sequence of courses. The hardware, networking, and security sequence requires the students to build on the previous course and maintain interest in the topics being covered. If students lose interest, it becomes difficult to justify teaching the more advanced courses. Note: The software language courses are only a two semester sequence and for the last few offerings have had good retention between the two classes.

Posted in Agile Methodology, C++, C++, Computers, GitHub, Java, Mentor, SCRUM, Software | Tagged , , , , , , , , | Leave a comment

Final Project Guidelines for Computer Programming Classes

Each of my Computer Science classes require a final project of complexity commensurate with what is learned in the class. The computer language used is the language studied during the semester. Currently, that is either Java or C++. This document is divided into the following areas. Deciding on a project and selecting team members should be performed simultaneously.

  1. Decide on Team Members
  2. Select a Project
  3. Create and/or Open a GitHub Account
  4. Create an Initial Design and Assign Sections
  5. Create Schedule
  6. Present Design and Schedule
  7. Create Stubs for All Modules in Project
  8. Daily Scrums
  9. Final Submittal of Code and Presentation

Decide on Team Members

With whom would you like to work? Choose one to two other members of your team wisely. Each person should contribute to the project. Decide on your team at the same time your are selecting your project (step 2). Send either a chat message on Teams or an e-mail to wayne.cook@coloradoearlycolleges.org.

Select a Project

What project would your team like to develop. Choose wisely. It should be related to what you have developed so far. Examples are Mancala in CSC160 C++ and Connect Four in CSC161 Java using JavaFX. Make it complex enough to make it interesting, but not so complex that it cannot be done within the time left in the semester.

Create and/or Open a GitHub Account

Repositories are vital to creating a large project. It allows code to be saved in an easily accessible location that saves the code as it is revised and allows the user to access any revision that might be needed for any purpose. The preferred Revision Control System is GitHub. Please go to this location and either login or create an account and then login. Be sure your name is unique and easy to remember. GitHub is connected to all Development Environments like Visual Studio for C++ and IntelliJ Idea for Java. GitHub uses Git on your local system as the interface. Be sure to download Git to your system.

Integrate GitHub with Microsoft Visual Studio 2019

Here is how to integrate GitHub into Microsoft Visual Studio.

Create an Initial Design and Assign Sections

There are several formats for design. The main attribute is that it has enough information to be helpful. One method I would recommend is Object Oriented Design Using UML (Universal Modeling Language). An example is Rubber Ducky Corporation. Know what you want to do and then start deciding what that is. If you are using Classes, use UML Diagrams to describe their interfaces. An example of a UML follows. It has a Person Class with two classes that inherit from the person class, a Customer Class and a Personnel Class. Just for your information, the symbols are as follows:

  • # – Protected item, accessible by Class and all Subclasses.
  • – Private item, accessible within the Class only
  • + – Public item, accessible by everyone
UML Diagrams Example for Person, Customer, and Personnel
UML Diagram for Class Person and Subclasses Customer and Personnel

The above diagram was created from Microsoft Word. There are several tools that are available that are better than Word. A list of twenty-eight is at BEST 28 UML Tools in 2020. A single one which one of my students recommended is app.diagrams.net. This last one looks interesting. It allows saving the files to one of your online repositories like Google Drive or Microsoft One Drive. This makes life easier but it also requires you to log into your storage device through their interface. When you have added the Git/GitHub integration, you can start creating the needed classes. The first example is for C++ and Visual Studio.

Create Schedule

On the bottom of the Rubber Ducky Corporation page is a list of tasks to be done from most to least important. Go ahead and fill it out and decide how long it would take to do each task. Build a schedule based on your analysis.

Present Design and Schedule

Put together your design and put into slide form. On 30 November 2020, please make your presentations.

Create Stubs for All Modules in Project

Set up your GitHub account within your team. Decide which modules you will be writing in each daily scrum. Decide on the order in which your team will write these modules. The modules that are scheduled last, write interfaces that accept expected arguments and return something appropriate. The logic does not need to be written yet. But a stub needs to be written so that the modules that are being written can call the unwritten module and get something reasonable in return. The best way to show how this is completed is by example.

C++

To use a class method, both the header including the needed Prototype and the file containing the code must be written. Here is the header file:

#pragma once
/* BoardSample.h
 * Wayne Cook
 * 17 November 2020
 * Purpose:
 *		Create a sample class to show how to create a stub in developing one method to use
 *		in your code development.
 */

#ifndef __BOARDSAMPLE__
#define __BOARDSAMPLE__
#include <random>
using namespace std;

// Set up the class in which the method will reside.
class BoardSample
{
public:
	BoardSample();
	~BoardSample();
	/* playerMove(int &)
         * Input - pointer to the player variable which indicates whose turn it is
         * Output - returns in the player variable whose turn is next
         *		1 - player 1
         *		2 - player 2
         *		0 - side empty
         */
	void playerMove(int&);
private:

};

#endif

then the code must be written. In this case I use a random number generator to create the player value of 0, 1, or 2:

/* BoardSample.cpp
 * Wayne Cook
 * 17 November 2020
 * Purpose:
 *		Create a sample class to show how to create a stub in developing one method to use
 *		in your code development.
 */

#include "BoardSample.h"

// Default constructor and destructor
BoardSample::BoardSample()
{
}

BoardSample::~BoardSample()
{
}

 /* playerMove(int &player)
  * Input - pointer to the player variable which indicates whose turn it is
  * Output - returns in the player variable whose turn is next
  *		1 - player 1
  *		2 - player 2
  *		0 - side empty
  */
void BoardSample::playerMove(int &player) {
	/* Set player equal to 0, 1, or 2 for simulating the results of a completed method
	 * after code completion. A random number divided by 3 gives the desired results.
	 */
	player = rand() % 3;
}

Java

Java is a bit simpler. It only takes one code file.

/* BoardSample.cpp
 * Wayne Cook
 * 17 November 2020
 * Purpose:
 *	Create a sample class to show how to create a stub in developing one method to 
 *	use
 in your code development.
 */

import java.util.Random;

public class BoardSample {

    Random random = new Random();

    /* playerMove(int player)
     * Input - pointer to the player variable which indicates whose turn it is
     * Output - returns in the player variable whose turn is next
     *		1 - player 1
     *		2 - player 2
     *		0 - side empty
     */
    int playerMove(int player) {
        int retVal = 0;
        /* Set player equal to 0, 1, or 2 for simulating the results of a completed 
         * method
 after code completion. A random number divided by 3 gives the
         * desired results.
         */
        retVal = random.nextInt(3);
    }
}

Daily Scrums

Scrums are usually done for two weeks sessions. They are based on the Agile Manifesto. In normal development cycles, a Scrum last two weeks. The name is based on how Rugby is played. Read the Scrum Manifesto to have a better idea of how to run your daily scrums. Each day submit a description of each task you have completed and what is scheduled to be done the following 24 hours.

Final Submittal of Code and Presentation

Be prepared for presentations on the 14th and 15th of December. Have your software ready to be submitted and demonstrated.

Posted in C++, Final Project, GitHub, Java, UML | Leave a comment

How Old is Boolean Logic?

Boolean logic was being used long before there were computers. We can go a little way back to when light bulbs were invented. There were no dimmer switches, so the light was either on or off.

George Boole (1815–1864) invented the mathematics for Boolean logic, but the actual concepts of Boolean logic are a part of civilization. I will give two examples of earlier logic, most theories have two inputs and one output (there can be more inputs but there should be only one output).

The first example is a farmer determining if the farm plans to sew a particular field, does the field need to be plowed?. The two inputs are: have I not started plowing the filed and have I finished plowing the field. If the answer to both questions are true, then the field is done and the farmer can go and sew the field or do something else. If the answer to either is false, then the field needs to be plowed.

Going back to hunter/gatherers, the same logic could be used to determine if someone needs to go hunting. The two inputs are that any member of the family is hungry and there is no food in storage. If the answer to both are true, then a hunt is needed. Otherwise other things, like weather, could be taken into account to determine if a hunt is advisable at this time.

We use Boolean logic in our daily lives, even if we do not realize it.

Posted in Boolean Algebra, Computers, Thinking | Tagged , , , , , , , | Leave a comment

Are There at Least Two Sides to Every Issue?

There is quite a bit of discussion on whether both sides of an issue should be presented, or should the people who control the discussion platform have the responsibility to publish only one side? This has been an argument going back as far as human history has been recorded. I am sure some people can recite Biblical or other early religious texts on the conflicts of two different sides. In the beginning, I will give examples in science and computer science.

One of the earliest discussions was on whether the earth was flat or round. The general belief was that the earth was flat, but some early Greeks, like Pythagoras, proposed that the earth was round. The majority of people said at that time that saying the world was round was nonsense. The earliest person to measure the circumference of the world was Eratosthenes of Cyrene, a Greek polymath, poet, astronomer, mathematician, librarian, and geographer. His measurement was very accurate. See “Who Was The First Person To Accurately Measure The Circumference Of The Earth?” for an excellent description of how Eratosthenes was able to calculate the circumference. Even after the circumference was calculated, the “experts” and “authorities” still insisted that the earth was flat. Anyone who disagreed was excommunicated or burned at the stake. a very effective way of eliminating any views that the people with authority did not like.

At the start of the 20th century there was quite an upheaval in physics. In 1900 most physicists believed that Newtonian Mechanics/Physics was the ultimate answer to answering all questions about motion. They likewise believed that the universe was filled with a substance called ether. that was needed for the transmission of light Since the people who believed in these theories were in charge of the Physics Journals of the time, they thought that any article that went against these theories should not be published. Think where we would be now if we did not know that the universe was a vast vacuum and without the Theory of Relativity by Albert Einstein being published. Albert Einstein eventually modified his theory and there have been additional discoveries confirming and modifying aspects of the theory over time. There may eventually be an entirely new theory created that allows for “Warp speed” space ships. Currently Einstein’s Theories are the basis of all new developments. If we disallow alternate proposals or theories from even being considered, would that help or hinder the advancement of Physics (which will also affect the welfare of mankind)?

All fields, to progress, have to have competing ideas. Any field that does not have competing ideas will eventually die out. I have been working with Computer Science since I was in high school and seen many major changes. Computer languages have progressed from binary through assembler and then Formula Translation (FORTRAN) to Structured and Object Oriented Languages. Their progressive development has led to significant developments that have helped computers help mankind in many ways. A short history of Software Languages is available on this site. The biggest controversy I remember is deciding what is the best way to develop code. The biggest conflict was between Structured Design and Agile Programming. There were cultures built around each approach, but at least the Computer Journals were open to presenting all ideas. I believe the best solutions are created through discussions and the adaptation of the best ideas. One compromise, which leans more to the Agile side, is the Scrum Methodology.

Does anyone remember speech and debate classes in high school and college? The one thing I remember being assigned is to research both sides of any controversy, from abortion through nuclear power. Researching both sides helped me understand the pluses and minuses on each side. Understanding both sides helps me make a clearer choice on each subject. That choice usually resides at some point between the two extremes. This really helps me understand where and why friends have their positions. It does not mean I will always agree with my friends but it helps us have civil conversations and gives me a good opportunity to understand different points of view.

For the longest time journalism always presented both/multiple sides of any issue. Universities were based on the Socrates method of discussion and that method carried over to journalism. There are now articles about the evils of Bothsidesism and how if you present both sides of a discussion, it will never lead to anything good. The article is written in such a way as to make one side look virtuous and the other side being represented as to make it look ridiculous. Unbiased facts are not needed and not really wanted. Look at some recent events. J. K. Rolling made the observation that Women have Periods, but that was against the current concept that gender is fluid. Therefore it must be stopped. What about what recently happened at the New York Times. The New York Times used to make sure that both sides were covered in the editorial page. Controversial editorials were published with editorial comments, especially if the editor disagreed with the premise. As long as editorials were on the editorial page and not the news page, that was fine. The most recent article is Senator Tom Cotton: Send In the Troops. The editor disagreed with the content of the editorial, but decided to publish the article so that people would better understand what the other side thought. As a result, the New York Times senior editor resigns amid backlash over controversial op-ed. Leadership does change, it can be nice to make sure that all opinions published match our own thoughts, that they reinforce our own beliefs. What happens if the leadership changes and a different philosophy now rules a particular organization. Will we like shutting down opposing thought as much if the supported thought no longer matches what we “know is true?”

The latest battleground is the internet. No one should be allowed to yell fire in a crowded theater when there is not fire. But if there is a fire should someone be allowed to take control of the situation and make sure people exit the theater safely? Just because someone does not like the idea of someone else noticing a fire, that does not mean it should not be mentioned. Russia has a simple solution for the internet, ban internet access to the common citizen. China has another solution, they have worked with Google to filter what their citizens can see. They also have a “good citizen” score that gives or removes rights to each citizen. Do we really want something like that in the United States? The First Amendment of the Constitute deals with free expression. That God-given right is vital to the survival of our country. Having an open and honest conversation is key to keeping us well-informed and able to make decisions that are good for us and for those around us. Censorship did not work through book burning, it will not work now either.

Developing a good understanding of our own opinions and thoughts, what we truly believe is right, is like weightlifting. It takes resistance to develop. The other benefit is that we may learn something. One such article for me was Why You Should Stop Saying “I Don’t See Color”. This article helped me refine my thoughts so that I can be more sensitive relating to people different than I. We all need to be pushed some and not become too complacent. We all need to hear both sides of each story and develop our own philosophy. Paraphrasing something that was said at the West Point 2020 graduation: “to be understood we must first seek to understand.” We each are individuals with attributes that may affect who we are. It is our responsibility to learn and grow. Complacency and censorship leads to nothing good. It is odd that the people who strongly protested book burning and who are in favor of the right to choose in certain areas are the most restrictive to the expression of views that do not agree with their world view. Providing the platform for free and respectful discussions is the best way to grow. Listen to different views. Those who do not will condemn themselves to a stagnant life. Also be aware of the difference sides of any story, then choose wisely as to which one is the most correct. But do not condemn others for coming to a different conclusion. Ask questions to understand why they believe the way they do. In having them explain their thoughts, each of us may have much more influence on others.

Posted in Uncategorized | Tagged , , , , , , | Leave a comment