Category Archives: CS348_01_FA_2023

Cs-348, Cs @ Worcester Week 10

https://www.revelo.com/blog/integrated-development-environments

The in-class activity this week, we focus on VS code and other types of Integrated development environment (IDE) . I found an article explain about the definition, purpose of IDE and a list of 10 common IDEs that developers should know.

IDE is a software application that simplifies code development, testing, and debugging, aiding in organizing project artifacts. It includes tools for Java, Microsoft Visual Studio, Android Studio, RStudio, and PyCharm, and compiles and interprets programs.

IDEs aid developers in real-time code parsing, detecting human mistakes, and allowing activities without switching between programs. Most enterprise development teams choose a pre-configured IDE suited to their specific use case.

IDE simplifies the setup process for developers by integrating different tools into the same workbench, saving time and effort. This is especially beneficial for onboarding new engineers, who can learn about standard tools and workflows. IDE capabilities save time by eliminating character sequence writing.

There are 10 common IDEs which are derived from a study of how frequently IDEs’ download pages are Googled.

Visual Studio: is suitable for web, mobile, and video game development. It offers compatibility testing tools for over 300 devices and browsers, making it suitable for both students and professionals.

Eclipse: is a free, open-source editor suitable for beginners and experts, initially a Java environment. It offers Java and Plugin Development Tooling, debugging tools, and Git/CVS compatibility.

Atom: is a Linux-based hackable text editor developed by GitHub. It offers various features, including the ability to activate extensions for significant changes or make minor tweaks. It can be used for writing fiction books, Python code, technical documentation, and more.

NetBeans: is a free, open-source development environment for Java apps, offering a simple interface, project templates, and bundles for other languages.

PyCharm: JetBrains’ PyCharm is a comprehensive IDE for Python programmers, offering a free Community Edition, a 30-day trial, and an annual membership ranging from $213 to $690.

Intellij IDEA: JetBrains offers the IntelliJ IDEA IDE, which includes a free Community Edition and a 30-day trial for the Ultimate Edition, which costs between $533 and $693 a year, offering a wide range of capabilities.

Code :: Blocks: is popular free and open-source which is a versatile tool that can be customized to suit specific needs, ensuring reliable functionality across all platforms.

Aptana Studio 3: a powerful open source IDE, offers a significant upgrade over its predecessors, allowing users to design, test, and deploy web apps from a single IDE.

Komodo IDE: a popular IDE for online and mobile development, offering a simplified UI, advanced editing, and features like the Syntax Checker and single-step debugging, with a free 21-day trial.

Ruby Mine: JetBrains’ RubyMine is a popular IDE for Ruby programmers, offering simple navigation, logical workflow organization, and interoperability with most platforms.

I chose this article because it provides the information that I need to deeply understand the IDEs and pick out the most appropriate preference for my future work.

From the blog CS@Worcester – Hong Huynh-CS348-WSU by hhuynh3 and used with permission of the author. All other rights reserved by the author.

Week 8

The contents that I have been learning in this week is about the software license and copyright. I found this blog giving the general definition of these contents and in the time Covid-19.

For many instructors who just want to do what is right, the reality that copyright is complicated has been made worse by the significant transition to distant learning. The fact that over 900 individuals took time out of their days to watch the webinar is proof that copyright education is necessary.

Many publishers combined helpful content, offered free teaching aids, and canceled copyright costs for online learning during the pandemic. Many pieces of content were utilized without the copyright owners’ consent; some were used for legal “fair use,” others were used carelessly, and some were exploited for opportunistic purposes.

Five significant developments emerged in the licensing and reuse of protected information between March and June 2020:

  1. Print photocopying vastly increased as students lost access to materials in the classroom.
  2. Online learning platforms and other EdTech tools gained traction.
  3. Publishers created no-cost licenses to enable teaching under these new circumstances.
  4. More assessments moved online.
  5. Teachers taught using materials they copied or posted online, sometimes underpaid or free licenses, sometimes under fair use, and sometimes by committing infringements that rightsholders were willing to ignore.

Remote learning during COVID-19 resulted in an increasing number of queries about copyright, licensing, and practices for universities, schools, and academy centers as they seek to ensure better compliance.

A license is a permission given to use a property or to exercise rights belonging to another under agreed conditions. Copyright is the exclusive right of the creator of a work or her designees to make copies of that work. In order to reach a conclusion that a use was or was not a fair use, the judge has to analyze all the following factors:

  1. The purpose and character of the use, including whether such use is of a commercial nature or is for nonprofit educational purposes.
  2. The nature of copyrighted work.
  3. The amount and substantiality of the portion used in relation to the copyrighted work as a whole.
  4. The effect of the use upon the potential market for or value of the copyrighted work.

This blog provides educators with a deeper understanding of copyright, its relevance to remote learning, and strategies for managing copyright compliance while using published resources in this new paradigm.

From the blog CS@Worcester – Hong Huynh-CS348-WSU by hhuynh3 and used with permission of the author. All other rights reserved by the author.

Cs-348, Cs @ Worcester Week 4

Software Development Methodologies

This week we have learned about software development methodology which is a series of processes used in projects. It is a codified communication tool which is a series of workflows between a group of people about how they are going to work, pass information, and communicate between each member in certain ways.

There are two methodologies that were introduced in our class. Waterfall software development methodology is one where each step is performed in order, a single time, and each step is not started until the previous step is completed. Agile methodology, one of the features of this software development methodology is that the cycle of steps is performed repeatedly, in short increments.

I found a blog that points out the common methodologies and they conclude with a comparison between them and also give out suggestions that might suit certain projects.

URL link: https://intersog.com/blog/top-software-development-methodologies/

  1. Waterfall
    This is the most straightforward approach to software development; however, it is relatively rigid as it consists of sequential phases that follow one another in order. All of these stages are performed in sequential order, the next step is started after the previous one is over.
    This method is essential to have clear objectives and stable project requirements. The main disadvantage is rather rigid and does not allow for any flexibility. Once the development stage is over, it is hard to come back to it and implement any changes. Another issue with this method is that it takes a long time.
  2. Agile
    Agile is an alternative development methodology that offers an entirely different experience from the Waterfall model. The idea is to break the development process down into bite-size pieces, increments, allowing the developers to make fast gradual changes to create a perfect end product.
    The agile method has the advantage of enabling developers to make incremental progress over a limited number of iterations. If any adjustments are required, they may always go back to a prior milestone. This method is appropriate for tasks when the final product’s appearance is uncertain. This approach, however, places an undue emphasis on team communication that may be difficult for remote teams to manage. Additionally, the project manager must have extensive experience in managing the entire project.
  3. Rapid Development
    The purpose of this method is to repeat the user design and construction phase as often as needed to satisfy the client’s requirements. This method could produce great results faster and at a lower cost. Being a popular alternative to agile in software development, it allows the developers to adjust to the changing requirements to meet the needs of a changing market.
    So, as much as agile, this approach suits dynamic projects in volatile markets and allows for rapid changes at a low cost. However, RAD method needs to ensure the developers’ expertise.
  4. Lean

This method cuts all the redundancies and inefficiencies to maximize performance. Maximizing the output of the project and the individual contributors. Professional software development teams already use a Lean approach, it is most effective when combined with another method, any project can be made Lean by reducing waste and emphasizing top-priority tasks. It needs a team of developers who can suit their approach to customer demands.

  1. Feature-Driven Development
    The large projects requiring months and months of backend coding, implementing the Feature-Driven Development (FDD) model might work for these projects. Usually, each feature takes a couple of weeks to finish its steps, and by the end of the development cycle, you get yourself a fully functional end product.
    This model is suitable for large projects, and remote teams as it requires fewer client and vendor meetings. The model requires a strong understanding of the project’s scope from every individual developer – all of them need to know what they are working towards.

To sum up, we must choose the one that suits your project. However, they prefer Agile as the most used approach that fits most projects and allows for greater flexibility, especially regarding long-term development cycles. This blog helped me to understand the process of each methodology and know the way to find a suitable method for the project in the future.

From the blog CS@Worcester – Hong Huynh-CS348-WSU by hhuynh3 and used with permission of the author. All other rights reserved by the author.