#TC1019 Review

Después de un semestre de clase con Ken Bauer puedo decir que agradezco mucho haber llevado esta materia con él y con sus métodos de enseñanza. Algo que me pareció sumamente importante fue que a Ken realmente le encanta dar clases, es su pasión y cada día se esfuerza en ser un mejor maestro. Esta cualidad hace que sus clases sean dinámicas y nosotros como alumnos queramos ir a su clase.

Feedback

This course is the first time I have Ken as one of my teachers. I had heard many people describe his style, but it’s nice to finally get to experience it. So far I’ve had a very good time with the class and don’t really have any big complaints. I think I’m in a situation than not many of my classmates share. Kens classes look to fix the many problems with traditional learning, which leaves many students just looking to pass and not learn. In my case, I don’t have a problem with traditional classes so I’ve never seen ken’s courses as a sort solution to me not truly learning.

I’ve really enjoyed the course but there are some classes I still prefer to take in a traditional way, like maths and core programming courses. I realize there are many cons to traditional courses, but I may just be used to it so much I call it personal preference. I have years of experience with normal teachers, and I’m still not as experienced with learning Ken’s way. Maybe with more experience I’d feel comfortable enough to take those courses differently.

To end this blog, here is a video some classmates and I made with our final words on the course. I’m somewhere around 2 mins.


Software Maintenance

Software maintenance is a part of development is one that I haven’t experienced before, but I know is very important in a professional environment. When studying, projects are made, handed in, and forgotten. Professionally, that isn’t the case.

Software Maintenance, as defined by these NCSU slides, is whatever modifications may be made to a program after it has been released. There are many reasons for maintenance, but the main ones are adding features and fixing bugs.

There are 3 main types of maintenance:

  1. Corrective: Fixing faults with the system, like bugs. One needs to find the source of the problem, change the code, ensure no new errors were introduced, and update documentation if needed.
  2. Adaptive: Make the system work in a different environment, OS for example, and ensure everything still works.
  3. Perfective: Form the slides “software maintenance performed to improve the performance, maintainability, or other attributes of a computer program”.
  4. Preventive: Even if there are no problems, improve the code to make it last longer. This may include switching to new technologies, reengineering, and refactoring. Functionality isn’t commonly added in this case.

Designing for Users

According to usability.gov:

User Interface (UI) Design focuses on anticipating what users might need to do and ensuring that the interface has elements that are easy to access, understand, and use to facilitate those actions.

In other words, making sure users are able to get stuff done with whatever software you make. There are many ways to design interfaces and one of the most commonly known ones is designing a Graphical User Interface, which is a process that involves User Interface Design.

Successful user interfaces always tend to be consistent and predictable. These qualities allow users to not have to learn UI’s from scratch for every new piece of software. The main categories for UI elements are (also from usability.gov):

  • Input: How the user will manage to communicate with the program. In many cases it may be text, but it also includes how you can make a file a to give the program instructions.
  • Navigation: Elements that allow you to get somewhere inside the program. They aren’t what the user ultimately wants, but are necessary for him to get there.
  • Information: How information is communicated to the user. Most of the time this is done by text, but images can also show information.. They may change depending on how much info should be given to an user without being overwhelming.
  • Containers: Organization elements typically used to store more important information inside.

Verification and Validation

After a long journey, we are at a step in SDLC where we have implemented what we think will solve the initial problem of match the initial requirements. After being done coding, it is very possible that the system has some mistakes and releasing it as is would end in a very bad disaster.That’s why Verification and Validation are parts of SDLC.

As a whole, verification and validation refer to making sure the project does what it’s required to do. Still, there are differences between the terms.

Verification focuses on the project as it evolves in development. According to SoftwareTestingFundamentals, it happens at every phase of the project to ensure you are going in the right direction. The main goal of verification is to make the product meet the requirements. This means we are dealing with the direction the projects is taking.

On the other hand, validation focuses on the code and making sure it works. Testing is the most obvious and important way to validate. At this step you want to ensure the software is ready to be used by its intended users without problems.

The order of both can be altered but verification usually comes first.


User Interface Design

User Interfaces, or UIs, are what the user utilizes to interact with a piece of software, it often is graphical and displayed in a screen, but it can also be hardware, like a controller. They are the most important part of the software for end users.

For a UI to be useful and likeable by the user or customer, it must be easy to use, must attract the attention, easy and intuitive to use, consistent and responsive. There are two main user interface categories: Command-line interface and graphical interfaces.

Command-line interface (CLI)

It is the most basic interface and consists only of text characters on lines. The first computers used CLIs to interact not particularly for the ease-of-use, but for the minimal resources consumed by it and the simpleness that it has. The main input method for the CLI is the keyboard.
Advanced users often prefer command lines to execute some tasks, as a graphical interface would be too bulky and impractical.
Embedded and remote systems often use CLIs because of the low data rates that they produce and the fact that they can be channeled through a variety of protocols, from serial to over-the-internet SSH connections.

Source
Graphical User Interface

GUIs are what most common users today know to interact with a computer, they are graphical frameworks to interact with a program often in more simple and intuitive ways than CLIs, the disadvantage of graphical interfaces is that they consume more resources, and often require a graphics processor to generate what is on screen. The main input methods for GUIs are mouse and keyboard.

They are often comprised of "windows" that represent a particular instance of a program that is executing, they provide buttons, sliders and tabs that make navigation a breeze, and change and adapt in order to
Continue reading "User Interface Design"

User Interface Design

User Interfaces, or UIs, are what the user utilizes to interact with a piece of software, it often is graphical and displayed in a screen, but it can also be hardware, like a controller. They are the most important part of the software for end users.

For a UI to be useful and likeable by the user or customer, it must be easy to use, must attract the attention, easy and intuitive to use, consistent and responsive. There are two main user interface categories: Command-line interface and graphical interfaces.

Command-line interface (CLI)

It is the most basic interface and consists only of text characters on lines. The first computers used CLIs to interact not particularly for the ease-of-use, but for the minimal resources consumed by it and the simpleness that it has. The main input method for the CLI is the keyboard.
Advanced users often prefer command lines to execute some tasks, as a graphical interface would be too bulky and impractical.
Embedded and remote systems often use CLIs because of the low data rates that they produce and the fact that they can be channeled through a variety of protocols, from serial to over-the-internet SSH connections.

Source
Graphical User Interface

GUIs are what most common users today know to interact with a computer, they are graphical frameworks to interact with a program often in more simple and intuitive ways than CLIs, the disadvantage of graphical interfaces is that they consume more resources, and often require a graphics processor to generate what is on screen. The main input methods for GUIs are mouse and keyboard.

They are often comprised of "windows" that represent a particular instance of a program that is executing, they provide buttons, sliders and tabs that make navigation a breeze, and change and adapt in order to
Continue reading "User Interface Design"

Composition

One of the topics from the semester that I understood the least was software design patterns. At the time, they seemed very abstract and I didn’t go in depth enough to understand any one of them. Since I haven’t worked on any big projects, most of the benefits that are mentioned do not apply to me, yet.

I got interested on the topic after watching the following youtube video by funfunfunction. It goes over what Composition is and its advantages:

Simply put, composition is making new types by having an instance of another type for its functionality. It’s different from inheritance in that you have, no are, another object.

What made this video specially relevant for me was that in POO (OOP class), we learned about inheritance as one of the main benefits of OOP. Inheritance to me was one of the better ways to achieve code reuse and I thought it made a lot of sense when talking  about OOP. Since taking that class I very often try to make inheritance work with my (school) projects.

Learning that one of the main concepts I had learned in POO was considered bad led me to understanding a one of the main differences in coding for homework and coding as a job: Planning. Ken has even mentioned this in class but now I’m able to relate it to myself. After watching the video, I felt like my way coding to date had been wrong, but I slowly came to understand how planning affected the situation heavily. In the video’s example, not knowing the future was the main reason why inheritance didn’t work. When I’m doing homework, Inheritance works perfectly because there are no users and I know how the code will work before I start. That situation just doesn’t happen in the real

Continue reading "Composition"

TC1019 Aug-Dec 2016 Review

First of all, lemme say THANK YOU Ken, for being such an awesome teacher. You are being innovative and have done what no other in Tec. 

My first class with Ken was Fundamentals of Programming almost three years ago, he always had these flipped learning ideas and education methods, but he adhered more to the standard teaching model that we are all used to. There were "normal" classes, "normal" exams and "normal" evaluations; maybe because of the nature of that course (?).

This semester, Ken has gone full #FlippedLearning, and I like it. Twitter is a very good idea for students to be connected and being able to simply "tweet" a new blog post (made when and were students are most comfortable) is very cool. Using a private hosting for the course rather than boring, old blackboard is nice, as more interactive features can be enabled, I like to see how classmates' posts begin to show up in the dashboard. Also, promoting new ways of communication such as Slack is very useful, now I see it everywhere, it happens like the Baader-Meinhof Phenomenon.

As a teacher, or rather, enabler for education, Ken is always trying to help his students succeed and everyone should at least once have a one-on-one talk to absorb personally the knowledge he has to offer. He is very acquainted with software and the industry standards.

Lastly, the course contents have served me as general culture, and are actually useful now that I started working. Had it not been for what I learned here, I would be lost when they mentioned the words "agile development", "scrum" or "stand-up meeting".

Thank you Ken and continue what you're doing :)

TC1019 Aug-Dec 2016 Review

First of all, lemme say THANK YOU Ken, for being such an awesome teacher. You are being innovative and have done what no other in Tec. 

My first class with Ken was Fundamentals of Programming almost three years ago, he always had these flipped learning ideas and education methods, but he adhered more to the standard teaching model that we are all used to. There were "normal" classes, "normal" exams and "normal" evaluations; maybe because of the nature of that course (?).

This semester, Ken has gone full #FlippedLearning, and I like it. Twitter is a very good idea for students to be connected and being able to simply "tweet" a new blog post (made when and were students are most comfortable) is very cool. Using a private hosting for the course rather than boring, old blackboard is nice, as more interactive features can be enabled, I like to see how classmates' posts begin to show up in the dashboard. Also, promoting new ways of communication such as Slack is very useful, now I see it everywhere, it happens like the Baader-Meinhof Phenomenon.

As a teacher, or rather, enabler for education, Ken is always trying to help his students succeed and everyone should at least once have a one-on-one talk to absorb personally the knowledge he has to offer. He is very acquainted with software and the industry standards.

Lastly, the course contents have served me as general culture, and are actually useful now that I started working. Had it not been for what I learned here, I would be lost when they mentioned the words "agile development", "scrum" or "stand-up meeting".

Thank you Ken and continue what you're doing :)