P1xt / p1xt-guides

Programming curricula
MIT License
6.91k stars 1.71k forks source link

edX paywall blocking access to resources #90

Closed LShun closed 5 years ago

LShun commented 5 years ago

Just started on How to Code: Simple Data and noticed edX implemented a new paywall system that blocks all graded assignments and limits access to course to around 21 days. Is there any plannings on creating alternatives to the courses on edX?

ghost commented 5 years ago

When the changes to edX were announced I didn't think it was going to be as bad as it is. But if P1xt plans on updating the guides for different resources I'd be more than willing to help look for them.

Also, at this point I think coursera would be a better option over the edx classes. Most of the classes don't have a paywall, atleast the ones that I've taken.

LShun commented 5 years ago

Yea feels like I'm missing out a ton unless I pay. Some other CS roadmaps like OSSU also utilizes edX, and they don't seem to have any plans on replacing them as far as I know, so I was wondering if they are still perfectly fine without all the graded assessments

P1xt commented 5 years ago

Coursera is actually far worse about paywalls than edX. On their paywalled courses, there is no access to assessments at all (from day one) without paying.

I will look for replacements for the edx paywalled courses - though they are going to be quite difficult to find replacements for (the How to Code series is brilliant).

My recommendation in the meantime is to take your 21 day restriction as a challenge to finish within 21 days.

P1xt commented 5 years ago

Actually, I've had a 2.0 version in the works for some time now. It may be time to put the finishing touches on it and publish soon.

If you want a preview - this is it's current (still needs editing and review) state:

Computer Science and Web Development

Please see the end of this guide for About/FAQ information.

Table of Contents

Tier X - Math Prep

Math which will be relevant throughout the guide. Begin it as you start the guide, and incrementally work through it alongside the guide. (You need not finish this before moving to Tier 0, or Tier 1, but be actively working on it alongside them.)

Courses Status Evidence
Algebra I
Algebra II
Trigonometry
Precalculus

Tier X - Programming Prep Prep

A very gentle introduction, complete if feel you would benefit from it, skip if you'd rather dive right into Tier 0

Courses Status Evidence
Intro to JS: Drawing & Animation
Intro to HTML/CSS: Making webpages
Intro to SQL: Querying and managing data
Advanced JS: Games & Visualizations
HTML/JS: Making webpages interactive
Capstone Status Evidence
Create a website highlighting what you learned and built over the course of this Tier. Use this as an opportunity to create a portfolio of your projects, notes, blog posts, etc.

Tier 0 - Programming Prep

Become familiar with Web Development basics - HTML/CSS/JavaScript plus Git and using the Editor of your choice

Courses Status Evidence
Learn Enough Command Line to Be Dangerous
Learn Enough Text Editor to Be Dangerous
Learn Enough Git to Be Dangerous
Learn Enough HTML to Be Dangerous
Learn Enough CSS & Layout to Be Dangerous
Learn Enough JavaScript to Be Dangerous
Reading Status Evidence
MDN HTML - Beginner's tutorials
MDN CSS - Tutorials
MDN JavaScript - Tutorials - For Complete Beginners
Eloquent JavaScript
Practice Status Evidence
Google Home Page
Rock Paper Scissors
Tier Programming Project
Tier Programming Project
Capstone Status Evidence
Create a website highlighting what you learned and built over the course of this Tier. Use this as an opportunity to create a portfolio of your projects, notes, blog posts, etc.

Tier 1 - Getting Started

Deepen understanding of Web Development and begin learning Computer Science topics

Courses Status Evidence
CS50's Introduction to Computer Science
How to Learn Math: For Students
CS50's Web Programming with Python and JavaScript
Single Variable Calculus
Algorithms
Software Debugging
Software Testing
CS50's Mobile App Development with React Native
Reading Status Evidence
MDN HTML - Advanced topics
MDN CSS - Reference - Key Concepts
MDN JavaScript - Tutorials - JavaScript Guide
You Don't Know JS: Up & Going
You Don't Know JS: Scope & Closures
You Don't Know JS: this & Object Prototypes
Practice Status Evidence
Complete all Classic Puzzles - Easy on CodinGame
Complete Google Kick Start 2018
Tier Programming Project
Tier Programming Project
Tier Programming Project
Tier Programming Project
Capstone Status Evidence
Create a website highlighting what you learned and built over the course of this Tier. Use this as an opportunity to create a portfolio of your projects, notes, blog posts, etc.

Tier 2 - Develop More Expertise

Dive deeper into the Computer Science topics which will prove useful throughout all programming

Courses Status Evidence
Mathematics for Computer Science
Introduction to Computer Science and Programming in Python
Introduction to Computational Thinking and Data Science
Multivariable Calculus
Software Construction
Introduction to Algorithms
Algorithms: Design and Analysis
Reading Status Evidence
MDN JavaScript - Tutorials - Advanced
MDN HTTP - Tutorials
MDN Web Components
You Don't Know JS: Types & Grammar
You Don't Know JS: ES6 & Beyond
JavaScript Allongé, the "Six" Edition
D3 Tips and Tricks v3.x
Practice Status Evidence
Complete all Classic Puzzles - Medium on CodinGame
Complete all ES6 Katas here
Complete Google Kick Start 2017
Complete Google Code Jam 2018
Complete FaceBook Hacker Cup 2017
Tier Programming Project
Tier Programming Project
Capstone Status Evidence
Complete a Specialization - note that in later tiers you will have the opportunity to continue work in this specialization, or begin work in another, so don't worry about 'am I picking the right one', you'll have two more chances so dive in

Tier 3 - Add More Rigor

Dive deeper yet, exploring algorithms and different programming paradigms

Courses Status Evidence
Software Architecture & Design
Probabilistic Systems Analysis and Applied Probability
Algorithms: Design and Analysis, Part 2
Differential Equations
Structure and Interpretation of Computer Programs
Design and Analysis of Algorithms
Artificial Intelligence
Reading Status Evidence
Official docs for Angular, React, or Vue
Jest Official Docs
JavaScript Design Patterns
Understanding ECMAScript 6
Professor Frisby's Mostly Adequate Guide to Functional Programming
Functional Light JS
Essential TypeScript
Practice Status Evidence
Complete all Classic Puzzles - Hard on CodinGame
Write the CSS Necessary to create your own 12 column based grid layout - see here for an example
Study The official Sass docs and convert your 12 column based grid layout to Sass
Complete All Tracks (Basic Programming, Data Structures, Algorithms, Math, Machine Learning, and Python) on HackerEarth
Complete Google Kick Start 2016
Complete Google Code Jam 2017
Complete FaceBook Hacker Cup 2016
Tier Programming Project
Tier Programming Project
Capstone Status Evidence
Complete a Specialization - note: you may complete another round of the specialization you selected in Tier 2 for deeper focus on that specialization

Tier 4 - Polish the Rough Edges

Wrap up by taking a look at some specific areas of computing to complete a breadth of knowledge that can be leveraged regardless of specialty

Courses Status Evidence
Computation Structures
Linear Algebra
Introduction to Databases - all mini-courses
Computer System Engineering
Performance Engineering of Software Systems
Mining Massive Datasets
Compilers
Reading Status Evidence
Human JavaScript
97 Things Every Programmer Should Know
Think Java - How to Think Like a Computer Scientist
Open Data Structures
Node.js Docs
Practice Status Evidence
Complete all Classic Puzzles - Very Hard on CodinGame
Study The Google Android Developer Guide and build the Android App of your choice
Complete Google Kick Start 2015
Complete Google Code Jam 2016
Complete FaceBook Hacker Cup 2015
Tier Programming Project
Tier Programming Project
Capstone Status Evidence
Complete a Specialization - note: you may complete another round of the specialization you selected in Tier 2 or 3 for deeper focus on that specialization

Tier 5 - Data Science

Expand beyond Computer Science into Statistics, Probability and Data Science

Courses Status Evidence
Data Science
M001: MongoDB Basics
Applied Data Science with Python
Deep Learning
M200P
Introduction to Probability and Statistics
Big Data
Statistics for Applications
Data Science
Convex Optimization
Hadoop
Reading Status Evidence
Think Python
Pandas Docs
Think Stats
Numpy Docs
An Introduction to Statistical Learning
Think Bayes
Think Complexity
Matplotlib Tutorials
The Quest for Artificial Intelligence
Multiagent Systems
scikit-learn
Differential Equations in Data Science
A Course in Machine Learning
Probabilistic Programming and Bayesian Methods for Hackers
Practice Status Evidence
Do 10 problems (of your choice) on Rosalind
Complete one competition of your choice from Crowd Analytix
Complete one Bot Programming Competition on CodinGame
Complete Deep Learning - TensorFlow on CodinGame
Do 20 problems (of your choice) on Rosalind
Complete the Digit Recognizer competition on Kaggle
Complete the Hackerrank Probability Challenges
Complete the Hackerrank Linear Algebra Foundations Challenges
Complete one competition of your choice from Crowd Analytix
Complete one Bot Programming Competition on CodinGame
Complete one competition of your choice on Kaggle
Complete one competition of your choice on Kaggle
Complete the Hackerrank Artificial Intelligence Challenges
Complete one competition of your choice from Crowd Analytix
Complete one competition of your choice from Analytics Vidhya
Complete one competition of your choice from Driven Data
Capstone Status Evidence
Create a website highlighting what you learned and built over the course of this Tier. Use this as an opportunity to create a portfolio of your projects, notes, blog posts, etc.

Specializations

Pick one specialization

Web Development - frontend

Pick a frontend library/framework (Angular, React, Vue) and complete the following: Note: include complementary technologies such as TypeScript, NgRx, and RxJS for Angular, Redux and React Router for React, etc. Note: All Projects should use your selected framework/library

Reading Status Evidence
FireBase
WebPack
Practice Status Evidence
Study all docs for the library/framework of your choice
Tier Programming Project
Tier Programming Project
Identify Blogs and Twitter users to follow to stay up to date on your chosen framework/library and begin 'reading up' on a weekly basis to stay current
Tier Programming Project
Tier Programming Project
Tier Programming Project
Open Source Contribution
Participate in the community surrounding your chosen framework/library - begin regularly interacting on twitter and other's blogs, and posting relevant content yourself
Tier Programming Project
Tier Programming Project
Open Source Contribution
Tier Programming Project
Capstone Status Evidence
Create a website highlighting what you learned and built over the course of this Tier. Use this as an opportunity to create a portfolio of your projects, notes, blog posts, etc.

Web Development - backend

Pick a backend language and library/framework and complete the following:

Note: include complementary technologies related to your choice: for instance, if you chose Python, consider the entire ecosystem of developing Python applications, including a framework such as Flask or Django. Note: Pick any Backend language you like, some ideas include - Golang, Rust, Elixir, JavaScript, Java, C#, Python, PHP, Ruby Note: All Projects should use your selected language and framework/library

Courses Status Evidence
M001: MongoDB Basics
M220J, M220JS or M200P
M310: MongoDB Security
Reading Status Evidence
TravisCI
Kubernetes
Practice Status Evidence
Study all docs for your chosen language and it's ecosystem
Tier Programming Project
Tier Programming Project
Identify Blogs and Twitter users to follow to stay up to date on your chosen language and it's ecosystem and begin 'reading up' on a weekly basis to stay current
Tier Programming Project
Tier Programming Project
Tier Programming Project
Open Source Contribution
Participate in the community surrounding your chosen language and it's ecosystem - begin regularly interacting on twitter and other's blogs, and posting relevant content yourself
Tier Programming Project
Tier Programming Project
Open Source Contribution
Tier Programming Project
Capstone Status Evidence
Create a website highlighting what you learned and built over the course of this Tier. Use this as an opportunity to create a portfolio of your projects, notes, blog posts, etc.

Mobile App Development

Pick your targeted mobile platform and complete the following:
Note: All Projects should target your selected mobile platform

Reading Status Evidence
FireBase
Practice Status Evidence
Study all docs for your chosen platform and it's ecosystem
Tier Programming Project
Tier Programming Project
Identify Blogs and Twitter users to follow to stay up to date on your chosen platform and it's ecosystem and begin 'reading up' on a weekly basis to stay current
Tier Programming Project
Tier Programming Project
Tier Programming Project
Tier Programming Project
Participate in the community surrounding your chosen platform and it's ecosystem - begin regularly interacting on twitter and other's blogs, and posting relevant content yourself
Tier Programming Project
Tier Programming Project
Tier Programming Project
Tier Programming Project
Capstone Status Evidence
Create a website highlighting what you learned and built over the course of this Tier. Use this as an opportunity to create a portfolio of your projects, notes, blog posts, etc.

Game Development

Pick your targeted platform, programming language, and related framework and complete the following:
Note: Choices include, but are not limited to

Note: Each Tier Programming Project in this Tier should be a game you create - it can be a clone, or a new idea, but the deliverable for each project is a completed game. Do not deploy non-original (clone) games to app stores - you'll get sued - you've been warned.

Practice Status Evidence
Study all docs for your chosen platform and it's ecosystem
Tier Programming Project
Tier Programming Project
Identify Blogs and Twitter users to follow to stay up to date on your chosen platform and it's ecosystem and begin 'reading up' on a weekly basis to stay current
Tier Programming Project
Tier Programming Project
Tier Programming Project
Participate in the community surrounding your chosen platform and it's ecosystem - begin regularly interacting on twitter and other's blogs, and posting relevant content yourself
Tier Programming Project
Tier Programming Project
Complete an Itch.io Game Jam
Tier Programming Project
Tier Programming Project
Complete an Itch.io Game Jam
Capstone Status Evidence
Create a website highlighting what you learned and built over the course of this Tier. Use this as an opportunity to create a portfolio of your projects, notes, blog posts, etc.

About this guide - FAQ

This guide is a merge of the original cs-wd and wd-cs guides with a comprehensive content overhaul.

Why? Coursera and edX have continually ramped up 'paywall' efforts over the past couple years, thus rendering many of the 'open' (as in free) course options available on their platforms increasingly unavailable for those without the funds to do more than audit.

CS50 remains, however the sequence beyond has been re-evaluated to use courses unlikely to hit the paywall issues. There are now a couple courses listed which may require the purchase or borrowing of a book, but the majority of the courses are self contained and books (like Cormen's Algorithms) should be freely available from your public library.

You'll note that each Tier has Courses, Reading, and Practice sections. It appears that Readings come after Courses, and Practice comes after Reading - but you need not take that literally. Take the Courses in order, stopping to Read or Practice as you like, aiming to finish everything in the Tier before moving to the next Tier.

See the end of this guide for ideas if you're at a loss for what to choose for your programming projects.

An important note about Programming Projects - you may elect to clone templates, apps, or games for your programming projects. When doing so, always use your own assets (images, audio, etc.) or assets you know are legal to use, and mark your project as 'inspired by' the original, giving full credit to the original author. Don't try to put their ideas off as your own, or (worse yet) try to put your project up on app stores as an original app. These are practice projects - don't go out and clone Tetris, toss it up on the app store, and get sued for copyright infringement and blame me - I warned you.

Each item includes a link or description of the Course, Reading or Practice, plus columns for Status (Started, Completed, In Progress) and Evidence (the paper trail showing what you learned: blog posts, repositories, project demos, notes, pull requests, etc.) You'll want to keep the Evidence updated for ease of creating your Capstone overview of the tier (or for later use creating a portfolio.)


Tier Programming Project Ideas

There are multiple Tier Programming Projects each tier. These can be any programming project you wish: web development, mobile development, games, applications, command line utilities, browser extensions, compilers, anything. They can be small to large endeavors. Pick something you want to code, that will provide you practice with existing skills or stretch you to grow new skills. Ideas: clone a popular website, clone a website template, create or clone a game, build a command line utility, enter a hackathon/programming competition. Note that the projects within a Specialization require that you focus on your chosen specialization.

To Practice Frontend Web, Mobile App, or Desktop Development

Clone one or more of the following Website Templates (or the frontend of any website or theme you like) as a web or mobile app:

Clone a Web Application as a Web, Mobile, or Desktop App:

Create a new Web, Mobile, or Desktop App in a typical category:

Clone a favorite game (or create a new one) as a Web, Mobile, or Desktop App

To Practice Algorithms and Data Structures

Complete any of the following archived coding competitions prior to 2015:

Complete a CodinGame Sponsored Contest Complete one or more sections on HackerRank

To Practice working with others

Contribute to Open Source

This site has a ton of information about how to break into open source.

Enter a hackathon

Game Programming ideas

Clone one of the following (note, do NOT publish as your own, you'll get sued)

ghost commented 5 years ago

Awesome! I'm most upset about the How to Code courses. Those were invaluable in my journey through the guides, they introduced me to functional programming. I would love to go back to those, but it's ridiculous that the testing and even some of the learning material is behind a paywall now.

P1xt commented 5 years ago

The How to Code courses are the ones that troubled me the most as well. They really are fantastic courses. There are other options for getting to the same place though. I was expecting they'd go paywall eventually because edx was toying with it last year. I'd been planning a few more months of research, but might speed that up and release the revamped guide sooner rather than later, I just need to review it all and double check it against the old to ensure I've not omitted any major topics.

LShun commented 5 years ago

Looks like I missed out some hot stuff then. But the new guide is awesome, looks like it solves the paywall issues. As an aside, it also seems much more approachable than the original one (example, the Code Jam 2008's "Fly swatter"). I'll close this issue once the new guide is up officially.

garymdurante commented 5 years ago

I have several questions, I hope its ok.

  1. Why the Princeton Algorithms p1&2 were removed from the new guide?
  2. Version 2.0 for python and android?
  3. Why mooc.fi (java) p1&2 is not included in your guides?
  4. What do you think of the App Academy Open?
garymdurante commented 5 years ago

By the way, the new CSWD guide is awesome and I really like it and wanted to do it because I don't want to be just in front end development, however I find it daunting to tackle... seems its aimed at those who has a lot of time to spare for several years...

I only have a few hours of spare time a day to do the guide (family and work), to estimate, by browsing the guide, it would probably take me 5 to 10 years to complete the new cswd guide.

Seems I'm stuck with JS v3.0

P1xt commented 5 years ago

@garymdurante

  1. Because I removed all the coursera and edx courses except CS50 from the new guide to avoid having to edit the guide monthly and fix courses every time they paywall a new one.
  2. No - I'm not convinced that anyone is even using those guides.
  3. Because their website is slow and crappy.
  4. It goes crazy slow in the beginning, and it's immersive on Ruby/Rails - it seems like good content, but isn't really pertinent here. However, if someone was looking for a spoonfed experience like FCC but with actual decent content, I'd recommend App Academy Open, it seems like great content and it's free. I would just warn said person to really push themselves and do some extra projects along with it.

If you really want the new CSWD guide, do it. Ok, you might only finish Tier 1 in the time it took you to do the JSJR 3.0, But, you'll be in the same place from a learning perspective. From a learning perspective, the most important thing isn't 'did I pick the right one', it's am I busy learning from the one I picked and not out spending all potential learning time googling for a different resource.

P1xt commented 5 years ago

Looks like I missed out some hot stuff then. But the new guide is awesome, looks like it solves the paywall issues. As an aside, it also seems much more approachable than the original one (example, the Code Jam 2008's "Fly swatter"). I'll close this issue once the new guide is up officially.

"Fly Swatter" did exactly what it was supposed to. It challenged you. Heck, it's a problem you still remember. Sometimes you have to tackle 'the hard stuff' to get good at tackling 'the hard stuff'.

j-resilient commented 5 years ago

I'm (slowly) working my way through the Python guide right now, actually.

P1xt commented 5 years ago

@jmccarty10 Thanks for letting me know. Knowing who's using what helps me prioritize what to update first. I won't forget Python ;)

rmcguire6 commented 5 years ago

I'm also slowly working my way through the Python guide. Appreciate your work. There's plenty of stuff out there about Javascript but good Python resources seem to be harder to find. Thank you. Regina

On Tuesday 03/19/2019 at 08:29, P1xt wrote:

@jmccarty10 Thanks for letting me know. Knowing who's using what helps me prioritize what to update first. I won't forget Python ;) — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

RyanMcCall commented 5 years ago

Well just to throw my two cents in, I'm working through the Data Science guide if it needs updating too.

ghost commented 5 years ago

Piggybacking off this thread, I would like to add that the Safari Books links now require a subscription. Eg: Modern Java EE Design Patterns

You can read the first chapter but everything else is behind a paywall.

rna7 commented 5 years ago

@p1xt

Why not use htdp book which the how to code course is based on? https://htdp.org/

Or Berkley lectures for SICP book? https://archive.org/details/ucberkeley-webcast-PL3E89002AA9B9879E?sort=titleSorter

https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html

P1xt commented 5 years ago

@rna7 htdp book is a great idea.

I doubt I'll add Berkeley lectures though - they have quite a few good courses but are prone to taking them offline without really any notice.

rna7 commented 5 years ago

@p1xt I meant the Brian Harvey's Berkley lectures for Stricture and Interpretation of Computer Programs (SICP). It is fully uploaded for 2015 version on the archive.org link in my previous comments. The course materials and lecture notes are fairly easy to find as well with a quick google search.

Regarding pay walled edX courses, I haven't experienced this yet, but have thought of taking a 'backup' of the videos and course materials.

For those that don't want to go down that route, the guy from How to Code series has a YouTube channel with older version of the same content. I'm not sure how far into the material he goes though.

rna7 commented 5 years ago

Here's link https://m.youtube.com/channel/UC7dEjIUwSxSNcW4PqNRQW8w/playlists

12shivs commented 5 years ago

I was just reading this thread, I am from india and here we have a MOOC provider which provides moocs and assignments(which have deadlines and are checked also) , it's powered by government so its free for everyone and anyone from any country can access it, it provides all courses in english language too. https://nptel.ac.in/

masterseeker commented 5 years ago

@P1xt Hi just came across your awesome guides and was seeking some advice. I have already completed How to Automate the boring stuff, MIT 6.00.1X and CS50, and I'm halfway through 6.00.2X. I'm currently most interested in the back end. But was wondering whether would it be beneficial to complete Python Guide then Move onto the CSBE java guide or start the CSBE guide straightaway. Also I Have completed the the first Course in Duke's Java series here and wanted to know if these courses are any sort of replacement for the how to code series considering what has happened on edx. The java course i took over half the questions were graded and the ungraded questions were still visible.

P1xt commented 5 years ago

@shivendrarox I took a look through that site and it has an amazing bunch of resources. Unfortunately, many (most) I looked at just had video lectures, with no projects, quizzes, or problems to solve.

P1xt commented 5 years ago

@masterseeker were I in your position right now, I'd take a look at the work in progress revamped guide I posted here: https://github.com/P1xt/p1xt-guides/issues/90#issuecomment-471812536

... and, do Tier 1 for now - ensuring all your Tier projects involve backend development with Python.

12shivs commented 5 years ago

@p1xt nptel provides quizzes and assignments during a semester for duration ranging from 4 week to 12 weeks. After this time the course instructors close the assignments and quiz submission window. This is usually done near the semester end. Since this semester is finished in nearly all of india, so you will not be able to see the assignments portal, but here i have a sheet for next semesters schedule for all the courses in the platform, during which the assignments window will be available

https://docs.google.com/spreadsheets/d/e/2PACX-1vRgBO0bXtb52Ocx-aT7yy6j5twA-3GcgWiN5RCGboG3XTD6P5hWpG_jbz8PZA1Aw5YPl2MeEPziCyKm/pubhtml?gid=0&single=true

masterseeker commented 5 years ago

@P1xt ok Thanks for the reply will do. Also in your math prep section on revamped guide you omitted Geometry is this not needed to prepare myself for calculus. Asking as I have nearly gone through the algebra 1 section and was about to start geometry

P1xt commented 5 years ago

@masterseeker geometry is awesome and fantastic to know - however, trig/algebra are far more pertinent at that point

P1xt commented 5 years ago

@masterseeker geometry is awesome and fantastic to know - however, trig/algebra are far more pertinent at that point

P1xt commented 5 years ago

Closed with https://github.com/P1xt/p1xt-guides/commit/4376d0252966a4718d1f9e77eba880038ec597d2 which revises the entire curriculum to focus on core topics and specializations with a strong selection of resources not likely to be paywalled.

PERCE-NEIGE commented 3 years ago

"Coursera is actually far worse about paywalls than edX. On their paywalled courses, there is no access to assessments at all (from day one) without paying."

It's exactly what Edx do now, and Coursera is now a far better option, because ALL Edx courses are now paywalled.

P1xt commented 3 years ago

That's not quite true @PERCE-NEIGE - There are still some courses that are completely not paywalled on both platforms.

The Stanford Algorithms courses by Sedgewick on Coursera, and the Harvard CS50 courses on edX come immediately to mind.

It's so uncommon though, to find a non-paywalled course, on either platform that those courses I listed are really the exceptions that prove the rule.