Customizing CLion

Clion LogoSome folks get a lot of enjoyment out of tweaking the UI of a piece of software.  In an IDE like CLion, the color scheme used for the code editor is highly customizable.  If you’d like to explore the settings and/or find a new theme for CLion or just the code editor, check out the CLion JetBrains tutorial at https://www.jetbrains.com/help/clion. Specifically, here are some tutorials you might want to look at:

Prep for Data Structures

Data structures is a challenging course.  I routinely receive requests for information about how to prepare for the course or what material to review.  Generally speaking, the most important thing to do is review and get comfortable with C++ and problem solving using C++.  Some of the topics that are of particular importance are:

  • Developing algorithms using fundamental control structures
  • Problem decomposition (breaking a problem down into steps to solve it)
  • Object oriented programming in C++ (classes, inheritance, and polymorphism in c++)
  • Pointers (what they are, how to use them, etc.) including pointers to pointers and arrays of pointers
  • Relationship between pointers and arrays
  • Memory management is a biggie, so I’ll break it down into finer points
    • Dynamic Memory Allocation and deallocation (new, new[], delete, and delete[])
    • What methods you should explicitly include in a class that contains dynamic memory (copy c’tor, overloaded operator =, destructor)
    • Difference between stack and heap (free store)

I don’t expect you to be an expert in all of the topics above, but I would expect that you’ve heard of all of them.  And, at least for some of them, you’ve got a firm understanding of what they are/mean/are used for.

Here are some links to materials from the last time I taught CSE 1342 that you might find useful:

If you’d like any more info on a particular topic, feel free to drop me an email.

Database Design – The ER Model

The Entity-Relationship Model is a data model that helps us describe the organization of data for a particular scenario (business, or some other need).  It was developed by Peter Chen and originally published in 1976.  What we get is an abstract representation of the data by viewing the problem in terms of entities and relationships (that exist among the entities).  Here are some good references for the ER Model:

Some terms and concepts to pay attention to:

  • Entity vs. Entity Set
  • Relationship vs. Relationship Set
  • Attribute
  • Key, Primary Key, etc.
  • Relationship Cardinalities (1:1, 1:M, M:N)
  • Relationship Constraints (Total or Partial)

Different ER Model Notations:

 

SQL

SQL is the language of relational databases.  Solving problems efficiently with SQL will require you to think in sets rather than procedurally.  Hopefully our foray into relational algebra has helped you hone those skills.  Some reading:

  • Pro MySQL by Kruckenberg and Pipes (APress Publisher) – Chapter 7: Essential SQL.  The book is available in PDF through the SMU Central University Libraries Website.
  • SQL Tutorial

Great TED Talk on Teaching Science

I don’t watch TED talks as much as I’d like to.  But I clicked on the one below given at TEDxBeaconStreet by Tyler DeWitt.  Tyler is a high school science teacher and a PhD student in Microbiology at MIT.  Tyler makes some great points about relaxing the formality of communicating science content in the classroom.  One of the main questions is this:  Is it ok to communicate something that isn’t 100% accurate (listen for his story about the “actually” guy) if the listeners are more likely to remember some of the content?  I would say yes.  Check out Tyler’s talk!.

 

Pimp your Mac’s QuickLook App for Source Code

Do you ever use the QuickLook feature on your Mac?  This is the feature that gives you a preview of a file when the file is highlighted in Finder and you press the space bar.  For some time, I’ve wished that it would perform syntax highlighting on source code files.  After you spend enough time looking at syntax highlighted code, it is simply no fun to look at black text on a white background.

After noodling around the Intertubes, I found a QuickLook plugin for syntax highlighting.  QLColorCode is, well, pretty amazing.  You can grab it from here.  A bonus is that it themes are available.  You can check out some of the themes here.

New QuickLook with syntax highlighting;

quicklooksyntaxhighlighting

QuickLook with the QLColorCode Plugin

 

Servant Leadership

I just came across a great article on servant leadership and the need for business schools to teach these concepts as part of their curricula. See this link.

Turning kids off to computer science

I just read this article that renewed a sense of urgency in me.  Bottom line: we need more students to major in computer science.  So many devices (and even just ordinary “things”) have microprocessors in them, and each one needs software written for it.  As we probably all know, software isn’t just big programs with massive amounts of brand recognition such as Windows, OS X, or even Linux.  Software is everywhere.

There are some indications that we are on a uptick of computer science majors.  See this article for some more information.  But we need more.  How do we get kiddos excited about pursuing a major such as computer science?  My opinion is that we need more support for amazing teachers.  Often, students fondest memories are very closely associated with the person that delivered the material, information, ideas, etc.  There is very often a connection between the deliverer of info and the info itself that makes an impact on people.  Students can see passion in their teachers (or they can see the lack of passion).  The spark has to be lit before college; we can’t do it all here.

 

 

Mobile Developers in Demand

This great article from the WSJ indicates that there is a serious lack of developer talent in the mobile space.  Perhaps my experience is not typical, but most people I know seem to be stuck like glue to their mobile device (whether or not it is every actually used as a cell phone, if it even ever has that capability).

Mobile application design and development isn’t going away anytime soon.  Is this the new “garage developer” idea?  How many schools have begun teaching mobile development?  I don’t have any numbers, but I would be willing to bet that it isn’t as many as should be teaching this material.  But this brings up an interesting thought:  Can college ever teach you everything you need to know?  Clearly the answer is NO!  So, where’s the balance?  When do we begin to expect that students will take it upon themselves to start learning something like this?  I know some that have and that experience of personal education (for lack of a better phrase) coupled with the new skills have tended to pay of quite nicely.

 

Memory Expansion… for your BRAIN!

Apparently, some engineers and scientists at USC’s Viterbi School of Engineering have created a memory chip for a brain. They have already made it work in rats and are moving on to monkeys.  Think of the possibilities here…

Some more info:

It’s an amazing world we live in!