<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>csci2210/271 on Jonathan Cook</title>
    <link>http://www.cs.nmsu.edu/~jcook/tags/csci2210/271/</link>
    <description>Recent content in csci2210/271 on Jonathan Cook</description>
    <generator>Hugo -- gohugo.io</generator><atom:link href="http://www.cs.nmsu.edu/~jcook/tags/csci2210/271/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Index of C/C&#43;&#43; Pages</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/c-cpp-index/</link>
      <pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/c-cpp-index/</guid>
      <description>The most comprehensive C/C++ reference site is CPPReference.com, its main page is C++ but it also has a section on C. Because it is extensive and uses official definitions, it can sometimes be hard to read, but once you get used to it, it is great.
   (mostly) Plain C Pages (mostly) C++ Pages     Introduction to C/C++ Non-OOP C++ Features   The C Preprocessor C++ Pointers and References   Compiling and Linking OOP Fundamentals   Command-line Arguments OOP Inheritance   C Input and Output OOP Polymorphism   Plain C Strings C++ Strings   C Pointers C++ IO Streams   Structs and Unions C/C++ Numeric Conversion from Strings   Using Const C++ Friend Functions   The Make Tool The Gnu Debugger   Valgrind Memory Debugger Commenting Code    Interesting other resources Yale professor James Aspnes has great notes on C and other topics.</description>
    </item>
    
    <item>
      <title>Introduction to CSCI 2210 (CS 271)</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/intro-cs271/</link>
      <pubDate>Wed, 25 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/intro-cs271/</guid>
      <description>This intro is now updated to be appropriate for Spring 2023.
Plan and Purpose for the Course  teach the foundational ideas in Object Oriented Programming (OOP) introduce students to the C/C++ world give students better grounding in tools (git, github, compilers, make, etc.) introduce plain C concepts even as we focus on C++  Translation of Programs into Executable Form Computers and high-level programming languages (HLPL):
 computers execute very basic machine instructions hard to program at the lowest level (in CSCI 2230 (CS 273) we do this) high-level languages were invented to make it easier need something to translate the HLPL into machine instructions  Compiled and interpreted languages:</description>
    </item>
    
    <item>
      <title>Git: Pretty Log Printing</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/git-pretty-logs/</link>
      <pubDate>Mon, 27 Nov 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/git-pretty-logs/</guid>
      <description>Git commands have many, many options for controlling what they do, and the command git log is no different.
One StackOverflow:pretty-git-logs thread has some suggested commands that create nice-looking textual graphs of git logs, and show the power of the commands.
One example is:
git log --graph --abbrev-commit --decorate --format=format:&#39;%C(bold blue)%h%C(reset) - %C(green)(%ar)%C(reset) %C(black)%s%C(reset) %C(dim white)- %an%C(reset)%C(red)%d%C(reset)&#39; --all What does all that mean? I leave it to you to investigate, but you can run the command on your own repository and get an idea by looking at the output.</description>
    </item>
    
    <item>
      <title>Visual Studio Code Help</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/vscode-help/</link>
      <pubDate>Wed, 15 Feb 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/vscode-help/</guid>
      <description>Visual Studio Code (VSCode) is not Visual Studio, but rather a separate code-centric editor and cross-platform mini-IDE. It&amp;rsquo;s actually a pretty nice development environment, though it can be a bit complex to customize to your liking.
VSCode is already available on the CS Departmental computers. VSCode is available at: https://code.visualstudio.com (along with lots of documentation and help), and I would recommend installing it on any other computers you use.
On Windows, these instructions seem to be good for setting up VSCode with gcc/g++.</description>
    </item>
    
    <item>
      <title>Unix Help Notes</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/unix-help/</link>
      <pubDate>Tue, 31 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/unix-help/</guid>
      <description>Below are old notes I had about the basics of Unix. These probably need edited quite a bit&amp;hellip;
Unix, Linux, MS Windows, MacOS, Android, iOS, and many more! All of the names in the header above are names of operating systems, or just &amp;ldquo;OS&amp;rdquo;. An OS is the fundamental software that controls the computer hardware (or phone, or tablet) and gives the user an interface to use the device.
The computers in the Computer Science labs (SH 118, 118B, and others) use Linux as their OS, and so learning how to use Linux is important for NMSU CS students.</description>
    </item>
    
    <item>
      <title>Unix Terminal Cheat Sheet</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/unix-cheatsheet/</link>
      <pubDate>Tue, 31 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/unix-cheatsheet/</guid>
      <description>Below is a table of the most common unix terminal commands and what they do. Always remember that when using a terminal, your terminal is in a particular directory (also called a folder), and the commands you do are going to operate relative to that directory, or on files in that directory.
   Command Meaning     pwd print working directory: it shows you what folder/directory you are in   ls list directory: it shows you what files and sub-directories are in here   ls -a list all: it will include hidden names that begin with a dot   ls -l list long: it will include detailed information about each file   cd dir change directory: this changes the folder/directory that your terminal is in; dir is relative unless it begins with a / (forward slash); .</description>
    </item>
    
    <item>
      <title>Git and Github</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/git-and-github/</link>
      <pubDate>Tue, 24 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/git-and-github/</guid>
      <description>In this course you will use the repository system Git, along with the popular hosted repository site GitHub. You will need to have a free student GitHub account in order to do the course individual and team project work. It would be a good idea for you to have a GitHub account and use it to host any significant course and extra projects that you have done, so that you can show recruiters a portfolio of your work.</description>
    </item>
    
    <item>
      <title>Unix Tutorials</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/unix-tutorials/</link>
      <pubDate>Mon, 16 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/unix-tutorials/</guid>
      <description>List of Unix Tutorial Web Sites I have not yet been able to review all of these sites for quality, but on first look they seem decent enough.
http://www1.udel.edu/it/help/unix/filemgmt.html
https://ubuntu.com/tutorials/command-line-for-beginners#1-overview
https://www.javatpoint.com/linux-tutorial
http://www.ee.surrey.ac.uk/Teaching/Unix/
https://www.tutorialspoint.com/unix/index.htm#
https://ryanstutorials.net/linuxtutorial/
https://www.guru99.com/unix-linux-tutorial.html
Cheat Sheets I have my own cheatsheet page. Another of my pages has some Unix help.
A useful command list because it starts with file and directory commands, what most people need to start with.</description>
    </item>
    
    <item>
      <title>Github Repo Access Keys (SSH)</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/github-access-keys/</link>
      <pubDate>Mon, 23 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/github-access-keys/</guid>
      <description>Github does not support allowing username/password access when using Git commands on your Github-hosted repositories. You have to set up keys to do this. There are alternative ways of doing this, but this page is only going to describe setting up SSH keys. Note that these directions are for Linux/Unix; MacOS should be similar (but you need the XCode tools I think); for possible Windows directions, see the bottom of this page.</description>
    </item>
    
    <item>
      <title>C&#43;&#43;: Intro to Object-Oriented Programming (OOP) Ideas</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/cpp-oop/</link>
      <pubDate>Wed, 25 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/cpp-oop/</guid>
      <description>What is Object-Oriented? Object Orientation is the combination of three main ideas:
 Encapsulation: this means putting things together to make it look like a whole and to hide the internal things from external inspectors outside. Inheritance: this means that some types can be subtypes of other things and inherit their features. For this, always think of the phrase &amp;ldquo;is-a&amp;rdquo;. For example, a bear is-a mammal. Bears inherit features of mammals (all mammals have hair; bears have hair).</description>
    </item>
    
    <item>
      <title>C&#43;&#43;: Polymorphism</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/cpp-polymorphism/</link>
      <pubDate>Wed, 15 Mar 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/cpp-polymorphism/</guid>
      <description>NOTE: Still being created&amp;hellip; Recall: Three main OO ideas: Object Orientation is the combination of three main ideas:
 Encapsulation: this means putting things together to make it look like a whole and to hide the internal things from external inspectors outside. Inheritance: this means that some types can be subtypes of other things and inherit their features. For this, always think of the phrase &amp;ldquo;is-a&amp;rdquo;. For example, a bear is-a mammal.</description>
    </item>
    
    <item>
      <title>FLTK Help: MacOS and Windows</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/fltk-macos-and-windows/</link>
      <pubDate>Tue, 22 Aug 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/fltk-macos-and-windows/</guid>
      <description>FLTK is a C++ cross-platform GUI framework that is decently object-oriented and is very nice for introducing GUI programming in a C++ OOP way (e.g., CS 271!).
Although it is cross-platform, is is not always straightforward to install on some platforms. Below are some things we have learned.
MacOS Assuming that you already have g++ installed on your Mac, we got FLTK working by doing:
  Use Homebrew to install FLTK: Brew/FLTK</description>
    </item>
    
    <item>
      <title>Code Development on Windows and MacOS</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/dev-on-windows-macos/</link>
      <pubDate>Thu, 12 Dec 2024 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/dev-on-windows-macos/</guid>
      <description>It is very beneficial for CS students to be able to develop code on your own machines, which probably are running either Windows or MacOS. It is good to learn to use Linux too, but there&amp;rsquo;s nothing like creating programs that run on the OS that you use regularly!
For truly native coding you should really use the development tools that the OS creator provides: this is Visual Studio (VS) for Windows, and XCode for MacOS.</description>
    </item>
    
    <item>
      <title>Summary of CSCI 2210 (CS 271)</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/cs271-summary/</link>
      <pubDate>Wed, 08 May 2013 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/cs271-summary/</guid>
      <description>An old old old summary of topics in CSCI 2210 (CS 271)&amp;hellip;
Plain C  functions and procedures (unique names) global and local variables (also static) printf() and scanf() &amp;ndash; not typesafe data representation limits (ranges, also accuracy for FP) Pointers! malloc() and free() &amp;ndash; not typesafe structs and linked structures macros and conditional compilation (#define, #ifdef..#endif) using C effectively requires using the C Standard Library effectively  C++  function overloading (unique parameter lists) default arguments new and delete (and array forms) iostreams (partially covered) &amp;ndash; typesafe Classes!</description>
    </item>
    
    <item>
      <title>Data Sources and APIs</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/data-apis/</link>
      <pubDate>Fri, 10 Mar 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/data-apis/</guid>
      <description>Interesting programming assignments often need some data. Below is just some resources I don&amp;rsquo;t want to forget about.
Data.gov provides government data
CKAN seems to be the base of many APIs (including data.gov)
List of open APIs
DataUSA a portal to US government data?
Star Wars Data May the Force be with you&amp;hellip;
More Gov Data
Weather Data: Getting Daily Readings NOAA weather station data and much more. To get weather station data, do: search tool -&amp;gt; select daily summaries -&amp;gt; select date range -&amp;gt; select station -&amp;gt; enter city or something -&amp;gt; select station that has a decent date range (some are new or old) -&amp;gt; add to cart -&amp;gt; view cart -&amp;gt; choose csv -&amp;gt; select all (location, flags, precip, water) -&amp;gt; enter email -&amp;gt; submit.</description>
    </item>
    
    <item>
      <title>Well Commented Code</title>
      <link>http://www.cs.nmsu.edu/~jcook/posts/commenting-code/</link>
      <pubDate>Wed, 25 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>http://www.cs.nmsu.edu/~jcook/posts/commenting-code/</guid>
      <description>This page needs updated to talk about Doxygen and Javadoc. In class when I am programming examples live I generally do not put very many comments in the code. This is really for three (intertwined) reasons: first, I am actively talking about the code, so it is really verbally commented in class; secondly, since it is verbally discussed, I don&amp;rsquo;t want to take the time to type out comments in class; and thirdly, since I am displaying in a large font, I want to have as much code as I can on the screen.</description>
    </item>
    
  </channel>
</rss>
