Review your
idethoughts.md
from a few weeks ago and add some summary notes.Think about what features or extensions in your favorite IDE you like the most and that you think others may not know about be preppared to share.
19. What is an IDE?#
quantum available for URI researchers
19.1. Review your notes#
Important
Do this before proceeding to the next section
Either discuss with peers in class or on the GitHub discusstion (asynch) discuss commonalities in your IDE notes.
19.1.1. In person#
What different tasks did all of you use an IDE for?
What features of an IDE did you all use?
Which features were used but not very much?
Share the most helpful IDE feature you use?
Update your individual IDE notes with 1-2 things you learned from your peers.
19.1.2. Asynchronous#
There are questions on the GitHub Discussion. Update your individual IDE notes in your KWL repo with links to your post and replies.
19.2. Learn more#
19.2.1. In person#
In class with your peers you can divide these up and read one and then share key points with others.
With your group
build a large list of IDE attributes or features that would be important. For example, share your favorite extensions and configurations
make a table of how would you evaluate attribute? Which ones would you evaluate by just if it exists or not? Which ones would you evaluate in different degrees, what attributes of them would you evaluate?
Discuss with your group how you would rank them. You do not all have to agree on a final ranking, but notice the differences.
Summarize what you all discussed on GitHub for your classmates. Note the ranking, with any disagreements.
19.2.2. Asynchronous#
After reading the above, also read at least 3 different articles about the “best IDE” for your favorite language or for multiple languages.
Notice what IDE attributes or features the authors think is important, and how they evaluate each criterion. Which ones are evaluted as present/missing? Which ones are evaluated in more detail.
Join the discussion on GitHub summarizing what you found the most important criteria to be and if you personally agree or not.
19.3. Experience Reports#
For today, whether you are in class or asynchronous use the experience report (makeup) action. Use ISO date format: YYYY-MM-DD for the workflow input.
19.4. How do I choose a Programming Language for a project?#
Today we’ll explore how programming languages are cateogrized. Along the way, this will expose what core, generic features of a programming language are.
The key takeaway that I want for your is to have intution for how to choose a language for a project, not only your favorite, but what is the best for different types of projects.
Tip
You should do either the in groups
(if in class) or the on your own
sections below for the x.x.x. For the x.x sections do all of them.
Important
Use the makeup workflow with an ISO formated date (YYYY-MM-DD)) if you work asynchronously. If in class you can do a regular experience badge.
19.5. Comparing languages you know#
Tak a few minutes on your own to fill in the follwing table for two languages of your choice. Replace the <langugage>
with two languages that you are familiar with. Add two additional rows. You can do this by memory, or by looking up/discussing. If you look things up, be sure to use reputable sources and include links to them.
In class you can work on this on a whiteboard or on your computer.
| feature | <language1> | <language2> |
| ++++++-- | ++++++-- | ++++++-- |
| use of whitespace | Text | Text |
| list/array types | | |
| variable typing | | |
| memory usage | | |
19.5.1. In groups#
Share your table with some classmates and then discuss how they are similar and different.
Together, produce a list of questions for what other things you would want to know about how programming languages compare. All of you should include the collaboratively developed list in your experience report.
19.5.2. On your own#
Think of a few questions about how you might compare programming languages.
Try to find high quality answers for them, from reputable sources. You can use an AI to find preliminary answers, but you need to find high quality sources to fact check and make sure you do not confuse yourself with incorrect information from a chatbot
19.6. Learn more#
Read the following
What is the study of programming languages? intro to PL
19.6.1. In groups#
You can divde the sources up and then discuss.
Discuss the readings, in particular:
what you found most interesting
was anything new to you?
what do you want to remember most or learn more about?
19.6.2. On your own#
Add notes on broader patterns below your table in your experience report based on reading the sources above.
Answer each of the following questions with specific references to the readings:
what you found most interesting
was anything new to you?
what do you want to remember most
what do you want to learn more about?
19.7. PL in Developer Survey#
Resources:
the most recent developer survey// languages section
Additional reading about the languages from their official references if needed to answer the following questions.
19.7.1. With classmates#
First discuss your prepare work then go back to the survey results to find more information and answer the following.
Discuss the findings to answer the following questions. This discussion should be at least 10-15 minutes including looking up information about different languages. As a group, you may divide and conquer this research.
what is surprising?
what did you expect?
what do the popular languages have in common?
what do the dreaded languages have in common?
How are popular vs dreaded languages different? What features might be the cause for making a language dreaded?
How to used languages differ from less commonly used languages? What features might be the cause for making a languge popular?
How have things changed since 2011?
Include (shared) notes from the discussion in your experience report. Reflect (individually) on a few key points (2-3 bullet points) from the discussion in your experience report for today.
19.7.2. On your own#
Include answers to the following questions in your experience report for today.
what is surprising?
what did you expect?
what do the popular languages have in common?
what do the dreaded languages have in common?
How are popular vs dreaded languages different? What features might be the cause for making a language dreaded?
How to used languages differ from less commonly used languages? What features might be the cause for making a languge popular?
How have things changed since 2011?
Reflect on how you might use this information when deciding what language to learn next based on this information.
19.8. Experience Report Evidence#
19.9. Prepare for Next Class#
In fractionalbinary.md use 8 bits to represent the following numbers by using 4 bits as usual (8,2,4,1) and the other 4 bits are 1/2, 1/4, 1/8, 1/16th:
3.75
7.5
11.625
5.1875
Add to your file some notes about the limitations of representing non integer values this way. How much would using more bits help with, what limitations are not resolved by adding more bits. For example, how could you represent .1?
19.10. Review Today’s Badges#
Important
Today’s badges are integrative 2x badges.
19.11. Badges#
Important
This is an integrative 2x badge.
Try a new IDE and review it in newide.md. Your review should be 3 secictions: Summary, Evaluation, and Reflection. Summary should be 1-3 sentences of your conclusions. Evaluation should be a detailed evaluation according to your group’s criteria and one other group’s criteria. In Reflection, reflect on your experience: What is easy? hard? What could you apply from the ones you already use? Were there features you had trouble finding?
Preview the Stack Overflow Developer Survey Technology section parts that are about tools. Create dev_insights.md with 3-5 bullet points for discussion. These can be facts you found most interesting or questions you have based on the results (it can be clarifying or deeper questions)
Choose two languages from the desired admired list. This could be a highly admired and least desired; it could be one with a small gap and one with a large gap. Read a few posts about each language and try to figure out why it is/not admired or desired. Summarize your findings. Include links to all of the posts you read in a section titled
## Sources
in your markdown file. For each source, make a bulleted list with some notes about the author’s background and any limitations that might put on the scope of their opinions. (for example, a data scientists’s opinion on languages is very valuable for data science, but less for app development) Add this to your kwl repo inlanguage_love_dread.md
.
Important
This is an integrative 2x badge.
The first four tasks are the practice task, then there are two pre-approved explore badge ideas. Hover it on your issue to create an independent issue to track it. Title the new issue Explore: IDE
. On the explore badge, when it is ready for submission, request a review from Ayman.
In bestide.md, compare two IDEs using your group’s table from class, to evaluate each of them. Your review should have an introduction that justifies the ranking and defines the criteria, a section describing each IDE with respect to all of the criteria and your overall experience with that IDE, and a conclusion that explains which of the 3 is the best based on your evaluation.
Configure your VS Code preferences to your github account. add settingssync.md with a description of what settings you customized and synced and reflect on why this is an important feature and what prerequisites to it might be.
Describe a type of project where it would be worth it for you to learn a language you have never used before in newlanguage.md This should be based in what types of features for the language your project would require and/or what would contribute to the long term health of the project. Your justifiction must come from sources used in class and be based in factual evidence about the language.
Learn about one of the following languages that you have not used before: R, Julia, Clojure, Zig, Go, erlang, Elixir or another language you are curious about that appeared in the Developer survey. For example you might be interest in the top paying languages. Use the official documentation. Answer the following questions in languagelearning.md:
1. What is this language designed for? 2. What Programming paradigm(s) does it support? 3. Give at least 1 example of a programming language that experience in would make it **easy** to learn this language and explain why. 4. Give at least 1 example of a programming language that experience in would make it **hard** to learn this language and explain why. 5. What is its most unique feature(s)?
hint: for questions 3 & 4, for example learning Python first does not make it easy to learn C++, but learning C makes it very easy to learn C++ (but I have not filled in explanations).
Explore badge option 1
Create a small repo owned by compsys-progtools named ide-USERNAME
where USERNAME
is your gh username with some example code, a vscode/codespace devcontainer file that installs CodeTour and your favorite extension(s). Write a CodeTour that walks someone through using your favorite extension to do something with the code.
The example code can be any language, can be very simple, can even have a bug in it if that helps your example. You can use an-IDE integrated LLM (eg GitHub Co-pilot, not the chat version) to generate some code for this purpose if you do not have some available to you already, but you cannot share solutions to a course assignment without that instructor’s permission.
Explore badge option 2
Actually try out one of the langauges above in a new repo created from this asssignment.
work on a branch and commit after each step
Setup the devcontainer to provide the compiler/interpreter for the language of your choice. See features
Add top extensions related to the language to the devcontainer.
Add a gitignore file for that language
Write a hello world type program in the language and make sure it runs.
Use the official documentation to figure out a common task in the language and write an example program that completes something typical for that language (eg a sort data analysis in R). You may use GitHub Co-pilot in the code space to help write the code, but you should justify the task you ask it to do. Commit any generated code immediately with the message “code from copilot via
” and your prompt filled in. Test your understanding of the code by trying to modify it, and make commits describing what you changed and why.
Fill in the prompts in the README (follow the comments) and Answer the questions in the README of the template repo.