[HN Gopher] CS101: Introduction to Computing Principles ___________________________________________________________________ CS101: Introduction to Computing Principles Author : tosh Score : 300 points Date : 2022-07-10 10:29 UTC (12 hours ago) (HTM) web link (web.stanford.edu) (TXT) w3m dump (web.stanford.edu) | [deleted] | triska wrote: | The impression I get from this schedule is that this is a | collection of quite _ad hoc_ topics that are in some cases quite | far removed from what I expected to see covered in a course that | is intended to introduce computing _principles_. | | For instance, are "For Loops", "If Statements" and "Spreadsheets" | really essential to computing, can these concepts be considered | "computing principles"? | | What about logic? I note there is a reference to "Boolean Logic" | as one part of the "Spreadsheets and Data" lecture. What about | models of computing, or defining what we even _mean_ when we say | "computing"? The lecture notes hint at some of these topics in | the final lecture ("Theory and Conclusions"), almost like an | afterthought. | rjsw wrote: | I remember finding out that a Biology major taking an | "Introduction to Computing" course had still not touched the | keyboard after six weeks. If a course like this helps people | without a programming background get started then that seems | good to me. | zasdffaa wrote: | I agree it's weird, but as someone with a decent CS | background... | | > What about models of computing, or defining what we even mean | when we say "computing"? | | ... I found all I've learn is worth nearly nothing in industry. | Which saddens me and it shouldn't be, but it is so. Really | basic principles get useful but only in very high-end areas, | stuff that I can barely comprehend (eg. automata for model | checkers etc). | feet wrote: | Which part of the industry do you work in? | zasdffaa wrote: | IT contractor. Much of it DB stuff. The range of work you | do goes from 'sit here and scrub data' to being given a | free-ish rein when you've proven yourself, and then you can | be very creative. | | It's all business-oriented work, as in, we need this ASAP. | I'd like to do more research-oriented work, or at least | cutting edge. Something that's solving longer term business | problems, not just 'get it done yesterday'. | ascar wrote: | > I found all I've learn is worth nearly nothing in industry | | It really depends what you work on. Doesn't even have to be | high end. When working on performance critical code I was | glad about my computer science and math education more than | once. And performance can get interesting even at a few | million users or regardless of user-count in realtime | applications. When writing business logic without performance | and scalability in mind, yea, all that knowledge remains | dormant. Reality is that there is simply far more business | logic work out there than performance critical code. | zasdffaa wrote: | All my understanding of perf-critical code has come from | understanding of the usual - pathological cases for | algorithms, memory layout, cache friendliness etc. etc. | None of that except perhaps a very little of the first, | came from my formal education, it's all been down to me | reading up on stuff. | | Can you give me an idea of what your CS & maths education | gave you that you found so useful for tuning code? Maybe | I'm missing something important. | ascar wrote: | > algorithms, memory layout, cache friendliness | | all of this was an integral part of my formal education. | Algorithms and datastructures and complexity analysis was | mandatory in the undergraduate studies, the lower-level | stuff mostly in elective postgraduate classes of my | computer science program. From the top of my head also | things like operating systems, compilers, networking, | vectorization (SIMD), instruction pipelining, branch | prediction, threading, NUMA, thread-pinning/affinity that | help understanding how my code is actually executed. On | the math side set theory, probability theory and analysis | also came in handy more than once. Linear algebra I guess | if I had to deal with matrices, which is probably | relevant in the AI/machine learning fields (not my area | of expertise). All of my math education was mandatory | undergraduate classes. | | Sure, it's well established that you don't need formal | education to learn all these things (which applies to | most fields, not just CS), but they are certainly part of | computer science and taught as part of formal education | at I would assume most good universities. | | From my experience (which is Germany and Japan, not the | US) especially postgraduate degrees are what you make of | them. You can learn nothing relevant for performance | critical engineering or you can learn a ton. | zasdffaa wrote: | >> algorithms, memory layout, cache friendliness | | > all of this was an integral part of my formal | education. | | Other than algos, we got none of this. | | > the lower-level stuff mostly in elective postgraduate | classes of my computer science program. From the top of | my head also things like operating systems, compilers, | networking, vectorization (SIMD), instruction pipelining, | branch prediction, threading, NUMA, thread- | pinning/affinity that help understanding how my code is | actually executed. | | We got compilers. Otherwise none of this - in fact these | are not computer science by some definitions. It was | pretty much maths at the end. I don't think we were well | served in some ways. | | > which is Germany and Japan, not the US | | I'm in the UK. | blibble wrote: | all of that was part of my undergraduate degree in the | mid 2000s as part of the core course | | (oxbridge) | ascar wrote: | > We got compilers. Otherwise none of this | | Did you have the option to take the relevant classes as | electives in your postgraduate studies? My postgraduate | had a single mandatory course and otherwise just required | that I spread my classes among 3 of ~7 major focus areas. | One of these areas was computer architecture, which | taught me most of the low-level things I listed above. | | Another thing I forgot above was formal education in | distributed systems and databases, especially the | postgraduate databases class that covered the inner | workings (like transactions, WAL, dependencies, | rollbacks, etc.) and distributed databases, which nicely | connected with the distributed systems lecture (which | dealt a lot with CAP theorem and consensus, e.g. paxos). | That's also something you can learn on the job, but the | formal education gave a pretty broad background that I | would think is hard to learn on the job. | | > computer science by some definitions | | I guess if there is a distinction between computer | science and for example computer engineering they would | mostly end up on the computer engineering side of things, | which sits somewhere between computer science and | electrical engineering. Though the level on which I | studied these concepts in our computer science department | was to understand how it works, history and state of the | art and it's implications on software. It was less about | how to create such a system from the electrical | engineering side of things. | zasdffaa wrote: | > Did you have the option to take the relevant classes as | electives | | Dunno. It was a long time ago. To be fair, a lot of the | stuff you mention learning just didn't exist back then - | it was a long time ago. Then again, we did a database | course and we got no hands-on with a real DB at all. It | was all random guff about functional dependencies etc. I | learnt literally nothing useful. I know about WAL etc | from learning after. | | > I guess if there is a distinction between computer | science and for example computer engineering | | You nailed it. Engineering vs science. The science was | taught purely in the abstract, application of it to real | problems was even held somewhat in contempt by one | lecturer. It could and should have been so much better. | NavinF wrote: | > What about models of computing, or defining what we even mean | when we say "computing"? | | IMO starting with that is the worst possible way to introduce | CS to students who are (statistically) far more interested in | programming and software engineering than in CS. Hell, most | students in this class are probably there only because it's a | prereq for the class they actually want to take. | rst wrote: | It's a first course in _programming_ , with occasional glances | at other relevant topics, whatever the title. | | MIT tried to do an intro course which was actually an | introduction to _principles_ , but the effect was so harsh that | undergrads without previous background in programming were | often advised to take a more conventional "intro to | programming" couse first. The textbook, "Structure and | Interpretation of Computer Programs", is still available -- but | the course is no longer taught at MIT, after they decided it | was no longer serving the needs of the students. | drc500free wrote: | Thank you for giving me a flashback to 20 years ago, | realizing that I couldn't perform in 6.170 because I didn't | know Java but there were no Course 6 classes that taught | Java. | UncleMeat wrote: | In my experience, the huge majority of people who take an intro | CS class want to learn how to solve problems with programs and | to learn how other people solve problems with programs. At | Stanford, almost every single undergrad takes an intro CS class | but only a fraction of those go on to major in CS or get a job | in software. You've got one class to provide useful information | to people - teaching people about models of computation or set | theory is not going to capture people's interest or help them | meaningfully in the future. But if somebody says "hey, I know | enough python to figure out how to split up a huge PDF into | individual files, one for each page, then suddenly they are | empowered to solve problems. | | Same reason we wait until Real Analysis to teach delta-epsilon | limits while the engineers are off taking PDEs. | cinntaile wrote: | > Same reason we wait until Real Analysis to teach delta- | epsilon limits while the engineers are off taking PDEs. | | This is very country dependent, we were taught delta-epsilon | limits in high school. Maybe not with the same depth, I don't | know. | indymike wrote: | If you look at the "lecture notes", yes it seems ad hoc. After | looking through some of the readings, I think this is a | fantastic, very comprehensive survey class. | molticrystal wrote: | When a person completes week 4, they'll have learned boolean | logic, if/for loops, bytes & variables, and had an overview of | hardware from the previous weeks. | | If the person is ambitious, that is the minimum required to | begin, and it might be worth seeing just how far they can get in | Nand2Tetris[0] where a person simulates building elementary logic | gates and circuits leading to an also very basic Arithmetic logic | unit and simple ram from nand gates. | | I wouldn't expect the person with just a few weeks of CS101 to do | week 4 of Nand2Tetris where they try out machine language on | their machine that leads to building an assembler, and then a | compiler, as this eventually requires knowing Java or a similar | language, but more power to them if they preview the course and | see how much they can understand. | | [0] https://www.nand2tetris.org/ | john1633 wrote: | There is an error on the 16th slide of the second lecture: XOR | only returns true when the inputs are _not_ the same. | (https://web.stanford.edu/class/cs101/lecture02.html#/16) | [deleted] | israrkhan wrote: | I like the course, but more than the course I like various | recommendation in this post. This is best part of HN. | gorgoiler wrote: | Are functions part of the course? Functions are both extremely | practical for real world problems where code is repeated but with | different values, as well as of course being fundamental to the | theory of computation. | | I very much enjoy introducing my pupils to functions. It is the | first time they really get to use the computer as a tool for | accelerating their abilities. Up until then, their code has | utility in the order of how much they wrote. Functions can let | you write a page of code that does so much more. | photochemsyn wrote: | This looks like a very practical course that introduces a lot of | tools/concepts valuable for any student in any field relying on | the modern computational setup. However, actually learning | programming however is just a time-consuming effort and there's | no real way around it. There's a whole industry built around 'we | can teach you programming in ten weeks' or whatever and it's all | nonsense. | | Some years ago I was working full-time in a molecular biology | lab, and part of the job involved using a lot of computational | bioinformatics tools. I knew a couple of CS people who were | writing bioinformatics software and they showed me pages of code, | and I asked "realistically, how long would it take me to learn to | write these kinds of programs" and the answer was always "at | least two years of full-time effort" (It was mostly C code they | were working with at the time, plus Java for the user | interfaces). My personal experience finally learning to program | over the past few years is right in line with those estimates. | | There aren't really any shortcuts, you just have to put in the | hours of work, week after week, month after month, year after | year. As with most fields, a lot of the introductory material is | outdated for modern industry but since the more advanced | technology relies on an understanding of the basics, you can't | just leapfrog it, that's like trying to learn calculus without | ever taking any algebra, or trying to grok CRISPR without knowing | how basic DNA replication works. | Arisaka1 wrote: | Not that I disagree with you but I don't see what the course is | promising as anything close to what you juts described and rant | about, and neither does it claim that it won't take time. Were | you perhaps attempting to respond to someone else's comment? | oxff wrote: | It's a weird porridge of topics. | | Just do this instead: https://dcic-world.org/ | srvmshr wrote: | HTDP by the same authors is a much more solid foundation. DCIC | is okay but I feel for a very narrow spectrum of people. | mrits wrote: | that books reads like an infomercial to a bad programming | language | no_time wrote: | How hard does it get later on? This looks very tame and quite | fun. In comparison, here in Hungary our "Basic computer science" | was filled to the brim with graph theory and was absolutely | joyless. | steve76 wrote: | xwdv wrote: | What I ultimately came to realize about all computer science is | that all problems are basically figuring out how you will do 3 | steps: | | 1. Organize data 2. Transform the data according to some input. | 3. Output a result. | | Once you've very clearly mapped out your data structures, | everything else becomes fairly trivial. Functions are nothing | more than turning data from one form into another. Outputs are | just data in some new structure that can be easily consumed for | some other purpose. | | I challenge anyone to find a problem that doesn't fit this | formula. | [deleted] | cardy31 wrote: | This has already been mentioned, but I can't recommend CS50 | highly enough. It literally changed my life. I was doing a music | degree and ran into CS50 on Reddit somewhere and decided to give | it a shot. Long story short I ended up getting a CS degree and | working for a large tech company. | nightski wrote: | It is much more programming specific focused, but I still think | my favorite intro to programming course ever is the original 1986 | Structure & Interpretation [1]. | | [1] https://www.youtube.com/playlist?list=PLE18841CABEA24090 | SneakyTornado29 wrote: | BTW this is not the intro stanford cs course. Take CS 106A! It is | the best intro to CS I've ever seen. This course is like AP CS | Principles whereas CS 106A is like AP CS A. | khaki54 wrote: | This course looks "fine"; however, I would recommend that anyone | interested in exploring CS (or perhaps even if you are a self- | taught and very able coder who wants to learn those missing | fundamentals ) takes CS50 out of Harvard. | | It is easily the most engaging course I have ever taken and it's | available for free on edx.org or you can take the "real" class | from Harvard extension for a couple grand. You can go into this | class as an underwater basket weaver or a strong coder and get a | ton out of it. | aabhay wrote: | I'd recommend CS 61a/b/c from UC Berkeley. I think it's | available online as well. The reason I like these three courses | is that they cover the three key aspects of computing -- | programming, data structures, and machine structures. I find | that the last part is often left out because we "abstract" away | low level features of computers, but learning even the basics | of page tables, caches, instruction sets, timing, etc. is | extremely critical to a complete understanding of what's going | on. | pamelafox wrote: | I was the most recent instructor of 61A and just wrote up | tips on auditing it: http://blog.pamelafox.org/2022/07/how- | to-audit-cs61a.html However, I don't recommend 61A for folks | new to programming, it's better as a second course. | lunarboy wrote: | I took 61a under DeNero as a transfer with high school APCS | and college intro class experience, since the dept didn't | let me waive the scheme/lisp part. And I was shocked at | difficulty, like "no way kids programming for the first | time as freshmen can keep up with his course pace" | aabhay wrote: | Hm I took it under someone else so I'm not sure what it's | like these days. Sad that it has such a reputation.. I | was able to ace the course and transfer into EECS my | freshman year, so things probably have gotten much harder | in the last ten years. | pm_me_your_quan wrote: | I took it when I was an undergrad (that was ten years ago, | but I hope the spirit remains the same) as my first CS | class. It was very tough given my preparation, but the | thing I appreciated was that it gave a very general | introduction to many high-level concepts in fairly good | detail. I felt I had a solid starting point in many things- | programming paradigms, understanding data abstractions, | levels of abstraction in program design, etc that I don't | always see replicated in other introductory material. | cloogshicer wrote: | I honestly don't understand why people keep recommending CS50. | Maybe I'm just a slow learner, but I really think that if I had | had to learn programming with that course, I would never have | learned it - the learning curve is really steep, and it crams | way too many languages into a very short amount of time, making | you a jack of all trades and a master of none. I also don't | understand the obsession of CS curricula to have people | implement things like sorting algorithms by hand. This would've | really put me off as a beginner. | BossingAround wrote: | Agreed. I also didn't like CS50 very much, and I wouldn't | recommend it to folks. I think people love it because it's | entertaining. | lolinder wrote: | Has it occurred to you that your dislike for it may be due | to the fact that you're not the target audience, rather | than that there's a problem with the course? In your | previous comment (since deleted), you noted that you had | been programming for a few years before you tried it. It's | an introduction to the subject, so you were bound to find a | lot of it to be beneath you. | | In my own experience working with a _lot_ of brand new | programmers, making the subject entertaining is 80% of the | battle. Most introductions to CS are unbearably dry and do | a very very poor job of motivating further study. The job | of an introductory course is to give an overview of what | you 'll learn going forward and make you _want_ to learn | those things, and by all accounts (even yours) CS50 does | that. | BossingAround wrote: | It absolutely has occurred to me that I'm not the target | audience. That said, I still think there's a problem with | the course in as much as I don't agree with the method | selected. | | In other words, CS50 is probably great if it is the one | and only course a new person would take. This is due to | the broad focus on so many concepts. | | However, if it is the first out of many courses, I would | not choose such broad focus. I would (and have done many | times) create a curriculum based on the student's needs | and desires. | | That's why I don't like CS50. It's not because I'm not | the target audience necessarily, it's that CS50 is | overhyped and, in my humble opinion, not suited to be the | first course for serious self learners. | | By not suited, I mean that there are a number of | specifications on Coursera that are a) also free, and b) | will lead one better to the goal if the goal is known | (which is where most newbies need a mentor). I do not | mean that CS50 is unsuitable; I mean that it is | suboptimal. In my experience, that is. | lolinder wrote: | Thanks for the substantive reply! It's good to get a | different perspective. | | I think you may be right about it being suboptimal for | self learners. It was, after all, not really designed for | that. I disagree that the breadth of the course is a | flaw. | | One major problem I consistently see with self-taught | individuals (including myself before college) is that | they have major blind spots, places where they don't know | what they don't know. A broad introductory course that | _intentionally_ doesn 't restrict itself to topics the | student is already interested in is the best way I know | to quickly turn those unknown unknowns into known | unknowns. Whether or not the student chooses to fill | those gaps in later with further courses, they'll be | better for knowing where the gaps are. | cardy31 wrote: | My experience was the opposite. I went in with absolutely no | programming experience. It took me a week to figure out how | to do the first problem set (boy are loops ever amazing). | | CS50 got me interested enough in programming to pursue it as | a career. I have a CS degree now, and work at a well known | tech company. | | I don't think the audience is "people who know some | programming already." It is designed for absolute beginners | and assumes very little about your prior programming | knowledge. I recommend it to any beginner looking to see what | computer science is about. | Aperocky wrote: | > making you a jack of all trades and a master of none. | | Master of a single programming language is a moot concept, it | either boils through to other languages or you just memorized | the syntax really well. | bidirectional wrote: | This is going too far in the other direction. There are | absolutely people who have mastered e.g. Java, CPP or | whatever with language-specific knowledge. Being an expert | on JVM internals won't boil through to Haskell. | Aperocky wrote: | JVM is essentially project knowledge, if you're writing | code that requires you to understand JVM internals really | well, unless you're working on JVM directly, something is | wrong within the division of labor. Programming with java | requires no internal JVM knowledge bare the bare minimal | surface ones (execution args, etc). | BossingAround wrote: | We do have CLR, BEAM, HaLVM, and LLVM. Understanding the | JVM translates to understanding similar architectures. | bidirectional wrote: | Why? If you're working on a performance critical | application, you need that knowledge. Plenty of HFT firms | use Java. | markdestouches wrote: | What's the reasoning behind picking Java for a | performance critical application over something like C or | C++? | tester756 wrote: | https://news.ycombinator.com/item?id=12051639 | nightpool wrote: | Well, being a master of JVM internals _does_ give you a | very strong grasp on a very useful basket of concepts for | GC and programming language implementations, so I 'm not | sure I would necessarily agree that there's no | transferable overlap. But regardless, neither of these | are applicable metaphors for a 101 level CS class--at the | introductory level, you're better getting a broader | survey of lots of different languages, because learning | the transferable fundamentals is more important than | learning the specific "trivia" of any particular | language. | BossingAround wrote: | Are you saying that beginners should always be taught | multiple languages? Why? | jacurtis wrote: | > I really think that if I had had to learn programming with | that course, I would never have learned it | | This is one of the most common misconceptions in general with | educational institutions and the general software engineering | job market. | | Programming is not Computer Science. | | Computer science teaches you how computers work, concepts of | how encryption works, concepts of security, concepts of | memory management, and so forth. More recently computer | programming has been added as a part of Computer Science | degrees, but actually just a decade or so ago (when I was | going through it), you could graduate with Computer Science | degree without programming experience at all. | | There is no doubt that learning computer science makes you a | better programmer, but it is different and it is possible to | be a good programmer without it. | | Programming is one of the practical applications that benefit | from strong computer science knowledge. Just like how taking | a human anatomy course or a biology course doesn't train you | to become a doctor. But it's pretty important knowledge | needed for doctors to be good at their jobs (so much so that | we don't let people practice medicine without it). | scott_s wrote: | What Computer Science programs were you aware of where | someone could graduate with no programming experience? I am | unaware of any. | BossingAround wrote: | Quoting someone else in this thread: | | > Harvard's course seems to be aimed at people who are | coders or want to be better at coding, so you learn about | different languages, algorithms/data structures, SQL and | such. | | CS50 is definitely somewhere between "comp sci course" and | a "get coding quick" bootcamp. | noSyncCloud wrote: | All of these are compelling reasons to take this course. I do | believe you've talked me into it. | nojito wrote: | That's the whole point of the course. It's designed to be a | catchall introduction to CS. | | Learning Programming != Learning CS | nverno wrote: | I remember learning mergesort as a beginner was a really eye- | opening experience. Going through the progression of sorting | algorithms seems like a perfect way to showcase the power of | algorithms- they are easy to implement and are used | everywhere. It's easy to forget how magical recursive | algorithms are to the uninitiated. | jstx1 wrote: | > making you a jack of all trades and a master of none. | | - it's not about learning a language | | - I don't think it's crammed either - it covers a lot but | everything is explained in a very accessible way from first | principles | | - if an introductory course was using only one language, you | still wouldn't master the language | | - being exposed to different ways to do the same thing is | very valuable and very underrated for beginners imo because | it teaches you to abstract over concepts - when you learn how | to read a file, write a loop, sort an array in each one of | C/Python/JS, you develop better understanding of the concept | of reading/looping/sorting instead of thinking that the only | way to do it is the way your first language does it; you | begin to develop a sense of which concepts are language- | specific and which ones carry over across languages. I think | it's better if this understanding happens early instead of | late. | lolinder wrote: | > making you a jack of all trades and a master of none | | This is exactly the point of any introductory college level | course. They're never intended to be the end of your | education, they're designed to be a broad introduction to | most of the different concepts that you will be learning | throughout the program. | | Even if you're not taking the rest of the program, having a | broad overview as a starting point is valuable. You won't | "master" _anything_ in 3 months no matter what you do, so | starting by going deep just needlessly limits your | perspective on how much there is to learn. | [deleted] | paulcarroty wrote: | CS50 is really good, and the instructor is real rockstar, not | a shame to recommend it too. Guess many people expected a | course like Codecademy with `print 'Programming is fun!'`. | BossingAround wrote: | The instructor is definitely great. Me, however, I prefer | to learn in a bit of a slower style, with less distracting | acting/performing. | toinewx wrote: | can you elaborate on why it is that good? why is it so | engaging? | jstx1 wrote: | Well selected material and great quality of teaching. It's | for complete beginners and it's very accessible without being | dumbed down in any way. | kevinventullo wrote: | I think this Stanford course is aiming at a different goal than | Harvard's CS50. Harvard's course seems to be aimed at people | who are coders or want to be better at coding, so you learn | about different languages, algorithms/data structures, SQL and | such. | | The Stanford course, especially the second half, appears to be | more in the spirit of liberal arts. It covers high-level | concepts in CS (server vs client, how does the internet work, | what is encryption) that even someone who never writes code | professionally will be able to use. They'll be better able to | read newspaper articles on tech topics, or perhaps more to the | point, better equipped to be a PM/lawyer/BD in the tech space. | cardy31 wrote: | > Harvard's course seems to be aimed at people who are coders | or want to be better at coding, so you learn about different | languages, algorithms/data structures, SQL and such. | | Hard disagree on this one. I learned how to program from CS50 | with no prior experience. That introduction got me interested | enough to pursue it as a career. I would highly recommend it | for anyone who just wants to see what the whole programming | thing is all about. | cehrlich wrote: | Harvard's CS50 is specifically described as a programming | course for non-programmers. | mycelia wrote: | Yes, I believe CS 106A would be more analogous to Harvard's | CS 50. | | https://web.stanford.edu/class/archive/cs/cs106a/cs106a.1228. | .. | photochemsyn wrote: | CS50 is a good course but this one has a very useful discussion | of open source and licensing issues related to various formats | that CS50 seems to lack. | otras wrote: | Strongly second CS50. I took it when first getting into tech, | and it was a very solid starting point to build my CS | foundation. I've heard from folks I've recommended it to that | they've continued to iterate and improve the course as well. | czernobog wrote: | I have been hearing a lot about cs50/cs50x. I will take as a | sign and start the course. | troupe wrote: | I'd highly recommend looking at the edX course "How to Code: | Simple Data" and "How to Code: Complex Data" as an introduction | to computer science. Those two classes were created around a | solid pedagogy of how students learn to break real world problems | down into code. Dr. Kiczales is incredibly good at taking | everything step by step and making sure nothing gets left out or | missed. | jdcampolargo wrote: | This is better plus you learn programming | https://www.learncs.online/ | orsenthil wrote: | After learning programming, practicing with leetcode is a good | way to learn Computer Science. It will cover Algorithms, System | Design and Databases. | opnitro wrote: | Flagging my two favorite introductions to computing: | | How To Design Programs: [https://htdp.org] | | A Data-Centric Introduction to Computing: [https://dcic- | world.org] | vo2maxer wrote: | Great suggestions. Thank you. ___________________________________________________________________ (page generated 2022-07-10 23:00 UTC)